numpy.insert#
- numpy.insert(arr, obj, values, axis=None)[源代码]#
在给定索引之前,沿给定轴插入值。
- 参数:
- arrarray_like
输入数组。
- objslice, int, 整数或布尔值的类数组
定义 values 插入位置之前的索引或多个索引的对象。
在 2.1.2 版本中变更: 布尔索引现在被视为要插入元素的掩码,而不是转换为整数 0 和 1。
当 obj 是单个标量或只有一个元素的序列时,支持多次插入(类似于多次调用 insert)。
- valuesarray_like
要插入到 arr 中的值。如果 values 的类型与 arr 的类型不同,则 values 将转换为 arr 的类型。values 的形状应该使得
arr[...,obj,...] = values
合法。- axisint, 可选
沿其插入 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]])