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

原文由 berkelem 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

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

原文由 berkelem 发布,翻译遵循 CC BY-SA 4.0 许可协议

这并没有像措辞那样直接解决您的问题,而是浓缩了其他答案/评论中提出的一些观点。


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

原文由 JDQ 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题