numpy在2D数组上的操作

时间:2016-06-17 16:25:29

标签: python numpy

我有一个numpy阵列' A'大小为571x24,我试图在其中找到零的索引,所以我这样做:

>>>A.shape
(571L, 24L)

import numpy as np
z1 = np.where(A==0)

z1是一个具有以下大小的元组:

>>> len(z1)
2
>>> len(z1[0])
29
>>> len(z1[1])
29

我希望创建一个与A大小相同的z1。我该如何实现?

编辑:我想创建一个布尔数组z1,在A中存在零,这样:

>>>z1.shape
    (571L, 24L)

2 个答案:

答案 0 :(得分:1)

你可以使用numpy中的python中的相等运算符来检查它。例如:

>>> A = np.array([[0,2,2,1],[2,0,0,3]])
>>> A == 0
array([[ True, False, False, False],
       [False,  True,  True, False]], dtype=bool)

np.where()执行其他操作,请参阅documentation。虽然,可以使用np.where()使用广播来实现这一点。见文档。

>>> np.where(A == 0, True, False)
array([[ True, False, False, False],
       [False,  True,  True, False]], dtype=bool)

答案 1 :(得分:1)

试试这个:

import numpy as np
myarray = np.array([[0,3,4,5],[9,4,0,4],[1,2,3,4]])
ix = np.in1d(myarray.ravel(), 0).reshape(myarray.shape)

ix的输出:

array([[ True, False, False, False],
       [False, False,  True, False],
       [False, False, False, False]], dtype=bool)