[英]Memory Error in Python when trying to sum through Numpy Ndarray Object
我有一個巨大的numpy ndarray(稱為mat
,其形狀為700000 x 6000),我想通過列求和以找到非零索引。
我想這樣總結一下:
x = np.sum(mat[:,y], axis=1)
indices = np.nonzero(x)
但是第一行立即給我一個即時的內存錯誤。 有沒有辦法我可以使用np.sum來做另一種使這種計算成為可能的方式?
您有兩個問題:
mat[:,an_index]
為您提供了一個維數數組,其唯一的軸是axis=0
另一個問題是數組的性質,如果它是一個浮點數數組,那么700,000個條目的總和完全等於零的概率接近於零……這當然不是不可能,但可以肯定的是。
也就是說,如果您可以減少數據集或改善硬件,則可以這樣做
In [39]: a = np.zeros((10,5))
In [40]: for i in range(5): a[3,i]=1+2*i if i != 3 else 0.0
In [41]: a
Out[41]:
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 1., 3., 5., 0., 9.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
In [42]: np.sum(a,axis=0)
Out[42]: array([ 1., 3., 5., 0., 9.])
In [43]: np.nonzero(np.sum(a,axis=0))
Out[43]: (array([0, 1, 2, 4]),)
In [44]:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.