为了说明我面临的问题,下面是一些示例代码:
a = np.round(np.random.rand(10, 15))
counta = np.count_nonzero(a, axis=-1)
print(counta)
A = np.einsum('im,mj->ijm', a, a.T)
countA = np.count_nonzero(A, axis=-1)
print(countA)
它创建一个二维数组,并沿最后一个轴计算其非零元素.然后,它创建一个3D数组,其中的非零元素沿最后一个轴再次计数.
我的问题是,我的数组a
太大了,我可以执行第一步,但不能执行第二步,因为A
数组会占用太多内存.
Is there any way to still get 100? That is to count the zeros in A along a given axis without actually creating the array?