比你的答案。
问题来自于Numpy数组的维度是固定的,因此无法删除任何项目。解决方案可以是将值替换为您的函数无法访问的另一个值,或者使用列表而不是数组。
不确定我是否完全理解上下文,但是参考你的“长话短说”,有几种方法可以删除数组中的特定点。如果要删除与特定值对应的元素,则使用逻辑来选择除具有该值的那些元素之外的所有数组元素。例如,
import numpy as np a = np.array([1, 2, 3, 4, 5]) val = 3 # If you want to delete the value b = a[a != val] # If you want the value to become something else (eg. 0) a[a == val] = 0
请注意,这只会以您希望它工作的方式起作用 val 在您的数组中只出现一次。如果您有要删除的元素的索引,请使用 numpy.delete() 作为参考 这里
val
numpy.delete()
numpy.delete(a, index)
或者,如果您不想删除它,但只是想将其转换为另一个值(例如0),
a[index] = 0
的 编辑 强>
然后,如果您根本不想弄乱原始数组,只是想要考虑特定元素,则可以使用索引数组并相应地删除其中的元素。例如,
b = np.arange(len(a)) # Begin algorithm on a[b] # Once an element is found in a and should no longer be considered... b = np.delete(b, index) # Repeat
当索引是2时,请注意此序列的输出
>>> b = np.arange(len(a)) >>> a[b] array([1, 2, 3, 4, 5]) >>> b = np.delete(b, 2) >>> a[b] array([1, 2, 4, 5])
使用此方法,您可以保持数组固定,但动态修改您的考虑集。