'numpy.ndarray'对象没有属性'remove'



我有一个数组数组,我正在尝试找到所有数组的最低非零值。

minima = []
for array in K: #where K is my array of arrays (all floats)
    if 0.0 in array:
        array.remove(0.0)
    minima.append(min(array))
print min(minima)

这产生了

AttributeError: 'numpy.ndarray' object has no attribute 'remove'

我认为array.remove()是删除元素的方式。我在做什么错?

我想我已经弄清楚了。.remove()方法是列表方法,而不是ndarray方法。因此,通过使用array.tolist(),我可以应用.remove()方法并获得所需的结果。

这不是按照措辞直接解决您的问题,而是凝结了其他答案/评论中提出的某些点。


以下说明了如何有效地从numpy阵列中删除值0.0。

>>> import numpy as np
>>> arr = np.array([0.1, 0.2, 0.0, 1.0, 0.0]) # NOTE: Works if more than one value == 0.0
>>> arr
array([0.1, 0.2, 0. , 1. , 0. ])
>>> indices = np.where(arr==0.0)
>>> arr = np.delete(arr, indices)
>>> arr
array([0.1, 0.2, 1. ])

另一种有用的方法是numpy.unique(),它"返回数组的独特元素"。:

>>> import numpy as np
>>> arr = np.array([0.1, 0.2, 0.0, 1.0, 0.0])
>>> arr = np.unique(arr)
>>> arr
array([0. , 0.1, 0.2, 1. ])

只需将其投入列表:

my_list = list(array)

您可以从那里获取所有list方法。

看起来您想要.delete:

minima = []
for array in K: #where K is my array of arrays (all floats)
    minimum = min(array)
    minima = np.delete(array, minimum)
    minima.append(min(array))
print(minima)

似乎对我有用,因此:

In [5]: a = np.array([1,3,5])                                                                                                                                   
In [6]: a = np.delete(a, 0)                                                                                                                                         
In [7]: a
Out[7]: array([3, 5])

最新更新