【发布时间】:2019-05-18 10:56:12
【问题描述】:
我创建了一个适当命名为 mask 的 2D 蒙版,使其具有与数组 data 相同的形状,我想在该数组上应用它。但是,当我这样做时,数据会失去其形状并变为一维。
我认为由于轴 0 的每个级别都是相同的(显示为使用循环理解创建 mask),因此输出将产生形状为 (837, 10) 的输出
我想知道是否有任何 numpy 技巧可用于在不使用 reshape 的情况下实现此目标?
>>> data.shape
(837, 44)
>>> m = altitudes < 50000
>>> m.shape
(44,)
>>> np.sum(m) # calculates my expected dimension for axis 1
10
>>> mask = [m for i in range(data.shape[0])]
>>> mask.shape
(837, 44)
>>> new_data = data[mask]
>>> new_data.shape
(8370,) # same as 837 * 10 (dimension wanted)
如果这不能实现,为什么会这样?
【问题讨论】:
-
我凭直觉就预料到了同样的事情——我觉得奇怪的是它不能那样工作!
标签: python arrays numpy masking numpy-ndarray