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]]
why C4 did not take column value and insert it before each item in column 1 i think it should be [[ 1 9 6][ 2 99 7][ 3 999 8]]
also
a = np.array([[1, 6], [5, 2]]) print(a,'n') c4 = np.insert(a, 1, [[9,88],[99,66]], axis=1) print(c4,'n')
why the result is equal to
[[ 1 9 99 6] [ 5 88 66 2]]
not equal to
[[ 1 9 88 6] [ 5 99 66 2]]
while the insert axis along axis 0 will inserted normally
c11 = np.insert(a, 1, [9,99], axis=0) print(c11,'n') c12 = np.insert(a, 1, [[9],[99]], axis=0) print(c12,'n')
the result:
[[ 1 6] [ 9 99] [ 2 7] [ 3 8]] [[ 1 6] [ 9 9] [99 99] [ 2 7] [ 3 8]]
Advertisement
Answer
after searching we found the answer as below:
the output of scaler index was 1d array
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]]
so when using scaler index to insert column along axis 1, the values will be assigned for scaler output (1d array) , then transpose the scaler output values to fit the indexed column.
a = np.array([[1, 6], [5, 2]]) print(a,'n') c4 = np.insert(a, 1, [[9,88],[99,66]], axis=1) print(c4,'n')
a[:,1]
a[:,1] = [a01 a11] = [[9 88] [99 66]]
so the
a01 = [[9 ] a11 = [[88] [99]] [66]]
after that a[:,1] will be transposed to fit with column
[[ 1 9 99 6] [ 5 88 66 2]]
while when using scaler index to insert column along axis 1, the scaler output will fit row index,
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]
so the
a10 = [9] a11 = [99]
a[1,:] of c12 (the values will be broadcasting) to fit obj
a[1,:] = [a10 a11] = [[9 9 ] [99 99]]
so the
a10 = [[9 ] a11 = [[9 ] [99]] [99]]
the result:
[[ 1 6] [ 9 99] [ 2 7] [ 3 8]] [[ 1 6] [ 9 9] [99 99] [ 2 7] [ 3 8]]