说我有一个清单:
lst = np.array([1,2,3,4])
我想将3
替换为[5,6,7]
,所以我得到了
lst = [1,2,5,6,7,4]
我试过了:
lst[2] = [5,6,7]
但这会给我一个错误:
setting an array element with a sequence
答案 0 :(得分:2)
您无法就地更改numpy数组的大小。您需要手动"通过连接其他两个数组的切片来创建一个适当大小的新numpy数组:
>>> x = np.array([1,2,3,4])
>>> y = np.concatenate((x[:2], [5, 6, 7], x[3:]))
>>> y
array([1, 2, 5, 6, 7, 4])
或者,您可以将数组转换为列表并在列表中进行替换:
>>> x = np.array([1,2,3,4])
>>> y = list(x)
>>> y[2:3] = [5, 6, 7]
>>> y = np.array(y)
>>> y
array([1, 2, 5, 6, 7, 4])
(请注意,与x[2] = 3
等操作不同,这两个选项都会创建一个新的独立数组,而不是改变x
。)
Numpy数组与尺寸改变操作不兼容;唯一的方法是创建一个全新的数组。如果你需要改变对象的大小,不要使用numpy数组;如果你需要使用numpy数组,找到一种方法来最小化或避免改变它们的大小。