Python 在numpy张量中创建非零值数组的有效方法?
我有一个3DPython 在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数据 注意:我不想用不同的方式过滤掉这些项目。
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)]