我有一个numpy 2D数组,我希望它返回coloumn c,其中(r,c-1)(行r,coloumn c)等于某个值(int n)。
我不想迭代写
之类的行for r in len(rows):
if array[r, c-1] == 1:
store array[r,c]
,因为它们有4000个而且这个2D数组只是20个中的一个,我必须看看它。
我找到了“过滤器”,但不知道如何使用它(找不到文档)。
是否有提供此类搜索的功能?
答案 0 :(得分:4)
我希望我能正确理解你的问题。假设你有一个数组a
a = array(range(7)*3).reshape(7, 3)
print a
array([[0, 1, 2],
[3, 4, 5],
[6, 0, 1],
[2, 3, 4],
[5, 6, 0],
[1, 2, 3],
[4, 5, 6]])
并且您想要提取第一个条目为2
的所有行。这可以这样做:
print a[a[:,0] == 2]
array([[2, 3, 4]])
a[:,0]
表示数组的第一列,== 2
返回一个标记匹配条目的布尔数组,然后我们使用advanced indexing提取相应的行。
当然,NumPy需要遍历所有条目,但这比在Python中执行要快得多。
答案 1 :(得分:0)
Numpy数组未编入索引。如果你需要在数组大小上比线性更有效地执行这个特定的操作,那么你需要使用numpy以外的东西。