dask.array.insert

dask.array.insert

dask.array.insert(arr, obj, values, axis)[源代码]

在给定的轴上,在给定的索引之前插入值。

此文档字符串是从 numpy.insert 复制的。

Dask 版本可能存在一些不一致性。

参数
arrarray_like

输入数组。

objint, slice 或 ints 的序列

定义在 values 插入之前的索引或索引对象。

1.8.0 新版功能.

obj 是单个标量或包含一个元素的序列时,支持多次插入(类似于多次调用插入)。

array_like

要插入到 arr 中的值。如果 values 的类型与 arr 的类型不同,values 将被转换为 arr 的类型。values 的形状应使得 arr[...,obj,...] = values 是合法的。

int, 可选

要沿其插入 values 的轴。如果 axis 为 None,则首先将 arr 展平。

返回
ndarray

插入 values 后的 arr 副本。注意 insert 不是原地操作:返回的是一个新数组。如果 axis 为 None,out 是一个扁平化的数组。

参见

append

在数组的末尾追加元素。

concatenate

沿现有轴连接一系列数组。

delete

从数组中删除元素。

注释

请注意,对于更高维度的插入,obj=0 的行为与 obj=[0] 非常不同,就像 arr[:,0,:] = valuesarr[:,[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]])