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

时间:2015-05-12 17:42:21

标签: python numpy multidimensional-array floating-point

我有一个数组数组,我正试图在它们中找到最低的非零值。

result = text.match(/'([^']+)'.*\((\d+)/)

这会产生

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' 是删除元素的方法。我做错了什么?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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


以下内容演示了如何有效地从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. ])

答案 2 :(得分:0)

看起来像want .delete

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

print min(minima)

答案 3 :(得分:0)

只需将其转换为列表:

my_list = list(array)

然后您可以从此处获取所有list方法。