我有一个三维数组,如下所示:
理想情况下,我希望有一个类似于
A = np.array([[[1, 1], [1, 0]],现在我想要获得一个数组,如果一个位置上只有一个非零值(或为零),则该位置上的值为非零值。如果该位置上只有零或多个非零值,则其值为零。对于上面的例子,我想要的是:
[[1, 2], [1, 0]],
[[1, 0], [0, 0]]])
[[1, 0], [1, 0]]因为:
A[:,0,0]
中只有1
A[:,0,1]
中有0
,1
和2
,因此有多个非零值A[:,1,0]
中有0
和1
,因此保留1
A[:,1,1]
中只有0
np.count_nonzero(A, axis=0)
找出有多少个非零元素,但即使有多个1
或2
,我也想保留它们。我查看了np.unique
,但它似乎不支持我想要做的事情。理想情况下,我希望有一个类似于
np.count_unique(A, axis=0)
的函数,它将返回一个原始形状的数组,例如[[1, 3], [2, 1]]
,这样我就可以检查是否发生了3个或更多值,并忽略该位置。
np.count_nonzero(A, axis=0)
可以解决你的第一个问题。接下来的部分是从列表中保留唯一的1和2,对吗?为什么不直接使用 np.greater 来实现呢?然后将结果列表附加上去就可以了。 - Adeel Ahmad