我有一个3D numpy
网格A[ix,iy,iz]
,我通过A[ A<minval ] = 0
或A[ A>maxval ] = 0
等将其清零来过滤掉元素。然后,我想要执行剩下的物品。现在,我正在做:
for ai in np.reshape(A, nx*ny*nz):
if( ai > 0 ):
Atemp.append(ai)
然后我在Atemp
上执行统计信息。然而,这需要相当长的时间,我想知道是否有更有效的方法来创建Atemp
。对于它的价值,我正在使用这些数组中的几GB数据。
注意:我不希望以不同的方式过滤这些项目。我想将它们归零,然后在A
中创建一个包含所有非零元素的临时数组。
答案 0 :(得分:4)
您可以使用:
Expression<Func<Double, Double>> lambda = a => Math.Sin(a);
例如:
In [3]: x = np.array([0,1,2,3,0,1,2,3,0]).reshape((3,3)) In [4]: x Out[4]: array([[0, 1, 2], [3, 0, 1], [2, 3, 0]]) In [5]: x[x == 0] Out[5]: array([0, 0, 0]) In [6]: x[x != 0] Out[6]: array([1, 2, 3, 1, 2, 3])
答案 1 :(得分:0)
另一种选择:
Atemp = A.ravel()[np.flatnonzero(A)]