我有一个带有数字的 np.array 。我需要计算两列中非零的值的数量。
示例:
col1 = (1, 0, 2, 0, 8)
col2 = (0, 1, 6, 0, 9)
结果:
2只有(2,6)和(8,9)行是可以的。
我的版本(但这太慢了):
both_num = 0
for k in range(matrix[:, i].shape[0]):
if matrix[:, i][k] != 0 and matrix[:, j][k] != 0:
both_num += 1
答案 0 :(得分:0)
您可以使用all
:
import numpy as np
a = np.array([[1, 0, 2, 0, 8], [0, 1, 6, 0, 9]])
# array([[1, 0, 2, 0, 8],
# [0, 1, 6, 0, 9]])
a.all(axis=0)
# array([False, False, True, False, True], dtype=bool)
然后您只需要总结它:
np.sum(a.all(axis=0))
# 2
同样,如果您的数组是转置的,
a = np.array([[1, 0, 2, 0, 8], [0, 1, 6, 0, 9]]).T
# array([[1, 0],
# [0, 1],
# [2, 6],
# [0, 0],
# [8, 9]])
np.sum(a.all(axis=1))
# 2
答案 1 :(得分:0)
col1 = (1, 0, 2, 0, 8)
col2 = (0, 1, 6, 0, 9)
c = map(lambda col_1, col_2: col_1 and col_2, col1, col2)
import numpy as np
print np.count_nonzero([c])
或
# thx to @AChampion
np.count_nonzero(col1*col2)