numpy.insert#
- numpy.insert(arr, obj, values, axis=None)[source]#
在指定轴上前方指定位置插入指定值。
- 参数:
- arr类数组
输入数组。
- obj整数、序列或整数的序列
定义 values 所插入之前的位置或位置的对象。
1.8.0 版中的新增功能。
当 obj 为单个标量或包含一个元素的序列(类似于调用 insert 多次)时,支持多个插入操作。
- values类数组
要插入 arr 中的值。如果 values 的类型不同于 arr 的类型,values 会转换 arr 的类型。values 应成形,以便
arr[...,obj,...] = values
是合法的。- axis整数,可选
沿该轴插入 values。如果 axis 为 None,则先将 arr 展平。
- 返回:
- outndarray
已插入 values 的 arr 副本。请注意,
insert
不会原地操作:将返回一个新的数组。如果 axis 为 None,out 就是一个展平的数组。
另请参见
append
将元素追加到数组末尾。
concatenate
沿既有轴连接一系列数组。
delete
从数组中删除元素。
注意
请注意,对于更高维度的插入,
的行为与obj=0
完全不同,就像obj=[0]
与arr[:,0,:] = values
不同。这是因为基本索引与高级索引存在差异,详情请参见 索引。arr[:,[0],:] = values
示例
>>> import numpy as np >>> a = np.arange(6).reshape(3, 2) >>> a array([[0, 1], [2, 3], [4, 5]]) >>> np.insert(a, 1, 6) array([0, 6, 1, 2, 3, 4, 5]) >>> np.insert(a, 1, 6, axis=1) array([[0, 6, 1], [2, 6, 3], [4, 6, 5]])
序列和标量之间的差异,演示
的行为与obj=[1]
的行为不同的情况obj=1
>>> np.insert(a, [1], [[7],[8],[9]], axis=1) array([[0, 7, 1], [2, 8, 3], [4, 9, 5]]) >>> np.insert(a, 1, [[7],[8],[9]], axis=1) array([[0, 7, 8, 9, 1], [2, 7, 8, 9, 3], [4, 7, 8, 9, 5]]) >>> np.array_equal(np.insert(a, 1, [7, 8, 9], axis=1), ... np.insert(a, [1], [[7],[8],[9]], axis=1)) True
>>> b = a.flatten() >>> b array([0, 1, 2, 3, 4, 5]) >>> np.insert(b, [2, 2], [6, 7]) array([0, 1, 6, 7, 2, 3, 4, 5])
>>> np.insert(b, slice(2, 4), [7, 8]) array([0, 1, 7, 2, 8, 3, 4, 5])
>>> np.insert(b, [2, 2], [7.13, False]) # type casting array([0, 1, 7, 0, 2, 3, 4, 5])
>>> x = np.arange(8).reshape(2, 4) >>> idx = (1, 3) >>> np.insert(x, idx, 999, axis=1) array([[ 0, 999, 1, 2, 999, 3], [ 4, 999, 5, 6, 999, 7]])