在两个相同形状的复杂多维阵列中进行条件检查

时间:2012-04-18 15:11:05

标签: python numpy

我有两个10x2x2 complex64阵列。我想找到哪一个2x2数组在一个或两个中都不为零:

import numpy
a = numpy.zeros((10,2,2), "complex64")
b = numpy.ones((10,2,2), "complex64")

empty_one_or_both = (a.reshape(10,4) != 0).all(axis=1) * (b.reshape(10,4) != 0).all(axis=1) # EDIT

目标是仅对非空对执行其他操作,例如:

numpy.sqrt(a[empty_one_or_both])

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

从numpy 1.7开始,你可以做到:

a.all(axis=(1, 2)) & b.all(axis=(1, 2))

有关详细信息,请参阅docs,但如果您使用的是旧版本,我认为您需要重新整形,或者全部执行(1).all(1)。