我有一个2d数组数据。并希望每次第j次迭代为1时获得一个计数。其中i =行,j =列。如果不使用for循环,我该怎么做呢?
概念上是这样的:
for r in range(row):
if(data[r][j] == 1)
amount += 1
您可以这样做:
import numpy as np
a = np.array([[0, 1], [1, 1]])
j = 1
np.sum(a[:, j] == 1)
的结果是2,而np.sum(a[:, 0] == 1)
会给出1
如果您想在多个数组上使用条件,则可以使用np.logical_and(condition1, condition2)
:
np.sum(np.logical_and(a[:, 0] == 1, b[:, 0] == 2))
我对这个问题的解释是,您希望遍历行和列,并为数据中的每个条目添加1到amount
。这可以在不循环的情况下完成,如下所示。
import numpy as np
data = np.ones((6,8))
amount = data[data == 1].sum()
print amount
如果相反,您将固定一列j
,并且只需要此列中的数量:
import numpy as np
j=7
data = np.ones((6,8))
amount = data[:,j][data[:,j]==1].sum()
print amount