Python 在numpy张量中创建非零值数组的有效方法?

Python 在numpy张量中创建非零值数组的有效方法?,python,arrays,numpy,Python,Arrays,Numpy,我有一个3Dnumpy网格a[ix,iy,iz],我通过a[Amaxval]=0等将元素归零来过滤掉。然后我想对剩余的项目进行统计。目前,我正在做: for ai in np.reshape(A, nx*ny*nz): if( ai > 0 ): Atemp.append(ai) 然后我对Atemp执行统计。然而,这需要相当长的时间,我想知道是否有更有效的方法来创建Atemp。值得一提的是,我正在处理这些阵列中的几GB数据 注意:我不想用不同的方式过滤掉这些项目。

我有一个3D
numpy
网格
a[ix,iy,iz]
,我通过
a[Amaxval]=0
等将元素归零来过滤掉。然后我想对剩余的项目进行统计。目前,我正在做:

for ai in np.reshape(A, nx*ny*nz):
    if( ai > 0 ):
        Atemp.append(ai)
然后我对
Atemp
执行统计。然而,这需要相当长的时间,我想知道是否有更有效的方法来创建
Atemp
。值得一提的是,我正在处理这些阵列中的几GB数据

注意:我不想用不同的方式过滤掉这些项目。我想将它们归零,然后在
a

中创建所有非零元素的临时数组,您可以使用:

Atemp = A[A != 0]
例如:

在[3]中:x=np.数组([0,1,2,3,0,1,2,3,0])。重塑((3,3)) 在[4]:x中 出[4]: 数组([[0,1,2], [3, 0, 1], [2, 3, 0]]) 在[5]中:x[x==0] Out[5]:数组([0,0,0]) 在[6]中:x[x!=0] Out[6]:数组([1,2,3,1,2,3]) 您可以使用:

Atemp = A[A != 0]
例如:

在[3]中:x=np.数组([0,1,2,3,0,1,2,3,0])。重塑((3,3)) 在[4]:x中 出[4]: 数组([[0,1,2], [3, 0, 1], [2, 3, 0]]) 在[5]中:x[x==0] Out[5]:数组([0,0,0]) 在[6]中:x[x!=0] Out[6]:数组([1,2,3,1,2,3]) 另一种选择:

 Atemp = A.ravel()[np.flatnonzero(A)]
另一种选择:

 Atemp = A.ravel()[np.flatnonzero(A)]