按数组数组中的列计算布尔值

时间:2015-10-04 23:18:20

标签: python multidimensional-array

我有一组带有布尔值的数组:

 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'>

如何按列计算布尔数?

3 个答案:

答案 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的所有行值。用可迭代替换该值,您就可以得到解决方案。