1

The shape of B is (1,7,1). I am trying to insert B1 at a specific position in B but how do I keep the shape of new array B2 same as B with an extra element i.e. (1,8,1)? The current and desired outputs are attached.

import numpy as np
B = np.array([[[0.678731133],
        [1.244425627],
        [0.767884084],
        [2.006154222],
        [3.073758392],
        [1.037728999],
        [5.032947535]]])
B1=np.array([[10]])
B2=np.insert(B, 2, B1)
print("B2=",[B2])
print("B2 shape=",[B2.shape])

The current output is

B2= [array([ 0.678731133,  1.244425627, 10.000000000,  0.767884084,
        2.006154222,  3.073758392,  1.037728999,  5.032947535])]
B2 shape= [(8,)]

The desired output is

B2=np.array([[[0.678731133],
        [1.244425627],
        [0.767884084],
        [2.006154222],
        [3.073758392],
        [1.037728999],
        [5.032947535]]])

B2 shape=[(1, 8, 1)]
0

1 Answer 1

1

The docs say: If axis is None then arr is flattened first, which explains the result you are seeing. Try telling it which axis to insert into : B2=np.insert(B, 2, B1, axis=1).

import numpy as np

B = np.array([[[0.678731133],
        [1.244425627],
        [0.767884084],
        [2.006154222],
        [3.073758392],
        [1.037728999],
        [5.032947535]]])

B1=np.array([[10]])
B2=np.insert(B, 2, B1, axis=1)

print("B2=",B2)
print("B2 shape=",B2.shape)

This prints:

B2= [[[ 0.67873113]
  [ 1.24442563]
  [10.        ]
  [ 0.76788408]
  [ 2.00615422]
  [ 3.07375839]
  [ 1.037729  ]
  [ 5.03294753]]]
B2 shape= (1, 8, 1)

[Also, your desired output does not show the inserted element. I assume that's an oversight]

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.