NumPy数组的大小是固定的,因此不能就地移除元素。例如,使用del不起作用:>>> import numpy as np
>>> arr = np.arange(5)
>>> del arr[-1]
ValueError: cannot delete array elements
注意,索引-1表示最后一个元素。这是因为Python(和NumPy)中的负索引是从末尾开始计算的,所以-1是最后一个,-2是最后一个之前的那个,-len实际上是第一个元素。那只是为了你的信息,以防你不知道。
Python列表的大小是可变的,因此添加或删除元素很容易。
所以如果你想删除一个元素,你需要创建一个新的数组或视图。
创建新视图
可以使用切片表示法创建包含除最后一个元素外的所有元素的新视图:>>> arr = np.arange(5)
>>> arr
array([0, 1, 2, 3, 4])
>>> arr[:-1] # all but the last element
array([0, 1, 2, 3])
>>> arr[:-2] # all but the last two elements
array([0, 1, 2])
>>> arr[1:] # all but the first element
array([1, 2, 3, 4])
>>> arr[1:-1] # all but the first and last element
array([1, 2, 3])
但是,视图与原始数组共享数据,因此,如果其中一个被修改,则另一个被修改:>>> sub = arr[:-1]
>>> sub
array([0, 1, 2, 3])
>>> sub[0] = 100
>>> sub
array([100, 1, 2, 3])
>>> arr
array([100, 1, 2, 3, 4])
创建新数组
一。复制视图
如果不喜欢这种内存共享,则必须创建一个新数组,在这种情况下,创建一个视图然后复制(例如使用数组的^{}方法)可能是最简单的:>>> arr = np.arange(5)