使用 scaler obj (numpy.insert) 将列插入数组

insert column into array using scaler obj (numpy.insert)

    import numpy as np
    a = np.array([[1, 6], [2, 7], [3, 8]])
    print(a,'\n')
    c2 = np.insert(a, [1], [[9],[99],[999]], axis=1)
    print(c2,'\n')
    c3 = np.insert(a, 1, [9,99,999], axis=1)
    print(c3,'\n')
    c4 = np.insert(a, 1, [[9],[99],[999]], axis=1)
    print(c4,'\n')
    c5 = np.insert(a, [1], [9,99,999], axis=1)
>>>the result:
[[1 6]
 [2 7]
 [3 8]]

c2 = 
[[  1   9   6]
 [  2  99   7]
 [  3 999   8]]

c3 = 
[[  1   9   6]
 [  2  99   7]
 [  3 999   8]] 

c4 = 
[[  1   9  99 999   6]
 [  2   9  99 999   7]
 [  3   9  99 999   8]]

c5 = 
[[  1   9  99 999   6]
 [  2   9  99 999   7]
 [  3   9  99 999   8]]

为什么 C4 没有获取列值并将其插入到第 1 列的每个项目之前 我认为应该是 [[ 1 9 6][ 2 99 7][ 3 999 8]]

还有

a = np.array([[1, 6], [5, 2]])
print(a,'\n')

c4 = np.insert(a, 1, [[9,88],[99,66]], axis=1)
print(c4,'\n')

为什么结果等于

[[ 1  9 99  6]
 [ 5 88 66  2]]

不等于

[[ 1  9 88  6]
 [ 5 99 66  2]]

而沿轴0的插入轴将正常插入

c11 = np.insert(a, 1, [9,99], axis=0)
print(c11,'\n')
c12 = np.insert(a, 1, [[9],[99]], axis=0)
print(c12,'\n')

结果:

[[ 1  6]
 [ 9 99]
 [ 2  7]
 [ 3  8]] 

[[ 1  6]
 [ 9  9]
 [99 99]
 [ 2  7]
 [ 3  8]]

经过搜索我们找到了如下答案:

缩放器索引的输出是一维数组

a = np.array([[1, 6], [2, 7], [3, 8]])
print(a)
print(a[:,1])
print(a[:,[1]])
    
>>> 
a
[[1 6]
 [2 7]
 [3 8]]

a[:,1]
 [6 7 8]

a[:,[1]]
 [[6]
 [7]
 [8]]

因此,当使用缩放器索引沿轴 1 插入列时,将为缩放器输出(一维数组)分配值,然后转置缩放器输出值以适合索引列。

a = np.array([[1, 6], [5, 2]])
print(a,'\n')

c4 = np.insert(a, 1, [[9,88],[99,66]], axis=1)
print(c4,'\n')

一个[:,1]

a[:,1] = [a01 a11] = [[9  88]
                     [99 66]]

所以

a01 = [[9 ]      a11 = [[88]
       [99]]            [66]]

之后 a[:,1] 将被转置以适应列

[[ 1  9 99  6]
 [ 5 88 66  2]]

当使用缩放器索引沿轴 1 插入列时,缩放器输出将适合行索引,

a = np.array([[1, 6], [2, 7], [3, 8]])
c11 = np.insert(a, 1, [9,99], axis=0)
print(c11,'\n')
c12 = np.insert(a, 1, [[9],[99]], axis=0)
print(c12,'\n')

a[1,:] of c11

a[1,:] = [a10 a11] = [9  99]

所以

a10 = [9]      a11 = [99]
                  

a[1,:] of c12(值将被广播)以适应 obj

a[1,:] = [a10 a11] = [[9  9 ]                         
                      [99 99]]

所以

a10 = [[9 ]      a11 = [[9 ]
       [99]]            [99]]

结果:

[[ 1  6]
 [ 9 99]
 [ 2  7]
 [ 3  8]] 

[[ 1  6]
 [ 9  9]
 [99 99]
 [ 2  7]
 [ 3  8]]