我有一组带有布尔值的数组:
if (inputNum % 2 == 0)
countOdd++;
if (inputNum % 2 != 0)
countEven++;
以下代码统计行
中的真值[[False False True ..., False True False]
[False True True ..., True False True]
[False False False ..., True True False]
...,
[False False False ..., False False False]
[ True True True ..., True True True]
[ True True True ..., True True True]]
<type 'numpy.ndarray'>
如何按列计算布尔数?
答案 0 :(得分:3)
numpy.sum支持跨多个轴汇总数组。对于列使用0
轴,对行使用1
st轴。
>>> arr = np.ndarray(shape=(3, 4), dtype=bool)
>>> arr
array([[False, True, False, True],
[False, False, False, True],
[False, False, False, False]], dtype=bool)
>>> np.sum(arr, axis=0)
array([0, 1, 0, 2])
>>> np.sum(arr, axis=1)
array([2, 1, 0])
答案 1 :(得分:1)
如果您需要纯Python解决方案,我会选择itertools.izip。
# Example
# itertools.izip('ABCD', 'xy') --> Ax By
results = []
for r in itertools.izip(*my_array):
results.append(sum(r))
答案 2 :(得分:0)
假设我有一个numpy数组
a = numpy.ones([3, 4])
>>> a
array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
numpy有一个非常简洁的功能,让你在多个维度中指定切片,这样数组[row_indices,col_indices]是有意义的。请考虑以下事项:
>>> sum(a[:,0])
3.0
我刚刚添加了列索引为0的所有行值。用可迭代替换该值,您就可以得到解决方案。