maxframe.tensor.insert#

maxframe.tensor.insert(arr, obj, values, axis=None)[源代码]#

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

参数:
  • arr (array like) -- 输入数组。

  • obj (int, slice or sequence of ints) -- 定义 values 插入位置的索引或索引集合。

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

  • axis (int, optional) -- 插入 values 的轴。如果 axis 为 None,则先将 arr 展平。

返回:

out -- 插入 valuesarr 的副本。注意 insert 操作不会就地进行:会返回一个新数组。如果 axis 为 None,out 是一个展平的数组。

返回类型:

ndarray

参见

append

在数组末尾追加元素。

concatenate

沿现有轴连接数组序列。

delete

从数组中删除元素。

备注

注意,在高维插入中,obj=0obj=[0] 行为完全不同,就像 arr[:,0,:] = valuesarr[:,[0],:] = values 是不同的一样。

示例

>>> import maxframe.tensor as mt
>>> a = mt.array([[1, 1], [2, 2], [3, 3]])
>>> a.execute()
array([[1, 1],
       [2, 2],
       [3, 3]])
>>> mt.insert(a, 1, 5).execute()
array([1, 5, 1, ..., 2, 3, 3])
>>> mt.insert(a, 1, 5, axis=1).execute()
array([[1, 5, 1],
       [2, 5, 2],
       [3, 5, 3]])
Difference between sequence and scalars:
>>> mt.insert(a, [1], [[1],[2],[3]], axis=1).execute()
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
>>> b = a.flatten()
>>> b.execute()
array([1, 1, 2, 2, 3, 3])
>>> mt.insert(b, [2, 2], [5, 6]).execute()
array([1, 1, 5, ..., 2, 3, 3])
>>> mt.insert(b, slice(2, 4), [5, 6]).execute()
array([1, 1, 5, ..., 2, 3, 3])
>>> mt.insert(b, [2, 2], [7.13, False]).execute() # type casting
array([1, 1, 7, ..., 2, 3, 3])
>>> x = mt.arange(8).reshape(2, 4)
>>> idx = (1, 3)
>>> mt.insert(x, idx, 999, axis=1).execute()
array([[  0, 999,   1,   2, 999,   3],
       [  4, 999,   5,   6, 999,   7]])