【发布时间】:2015-11-13 18:31:36
【问题描述】:
我有一个类似于以下的 numpy 数组:
a = np.array([1,1,1],
[1,1,1],
[2,1,1],
[2,3,1],
[2,3,1],
[2,3,1],
[3,4,1],
[3,4,1],
[3,4,1],
])
并想提取
所在的行a[0,:] >=2 and a[1,:] < 4
变成b,得到:
b = np.array([2,1,1],
[2,3,1],
[2,3,1],
[2,3,1],
])
我试过了
b = a[(a[0,:] >=2) & (a[1,:] < 4 )]
和
b = a[np.where((a[0,:] >=2) & (a[1,:] < 4 ))]
但这不起作用。有什么想法吗?
谢谢! 豪尔赫
【问题讨论】:
-
a[0,:]是第一行。你想要第一列吗?第一列是a[:, 0]。 -
啊,就是这样,基本错误,无法发现,抱歉。谢谢!
-
调试时,我喜欢看那个内部布尔掩码。深入挖掘并查看碎片通常更有效率,而不是在上面进行另一层计算(例如
where)。
标签: python arrays numpy where slice