Python - 替换并插入数组

时间:2015-03-22 17:44:30

标签: python arrays numpy replace insert

说我有一个清单:

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

1 个答案:

答案 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数组,找到一种方法来最小化或避免改变它们的大小。