I have two arrays P
and J
. I want to insert C1=nan
in P
according to positions in J
. But I am getting an error. I present the expected output.
import numpy as np
from numpy import nan
J=np.array([[1, 4, 5, 7]])
P=np.array([[1.35961580e 03, 1.35179719e 03, 1.30676673e 03, 1.17569069e 02,
5.19255443e 00, 5.19255443e 00, 5.19255443e 00, 1.00000000e-09]])
C1=nan
P=np.insert(P,J,[C1],axis=1)
print("Pnew =",[P])
The error is
in <module>
P=np.insert(P,J,[C1],axis=1)
File "<__array_function__ internals>", line 5, in insert
File "C:\Users\USER\anaconda3\lib\site-packages\numpy\lib\function_base.py", line 4626, in insert
raise ValueError(
ValueError: index array argument obj to insert must be one-dimensional or scalar
The expected output is
array([[1.35961580e 03, nan, 1.35179719e 03, 1.30676673e 03, nan, nan, 1.17569069e 02,
nan, 5.19255443e 00, 5.19255443e 00, 5.19255443e 00, 1.00000000e-09]])
CodePudding user response:
You can use for loop to reach each item in J.
import numpy as np
from numpy import nan
J = np.array([[1, 4, 5, 7]])
P = np.array([[
1.35961580e 03, 1.35179719e 03, 1.30676673e 03, 1.17569069e 02,
5.19255443e 00, 5.19255443e 00, 5.19255443e 00, 1.00000000e-09
]])
C1 = nan
for i in J[0]:
P = np.insert(P, i, [C1], axis=1)
print("Pnew =", [P])
CodePudding user response:
You need to pass J.ravel()
and C1
as value
not list
.
np.insert(P,J.ravel(),C1,axis=1)
array([[1.35961580e 03, nan, 1.35179719e 03, 1.30676673e 03,
1.17569069e 02, nan, 5.19255443e 00, nan,
5.19255443e 00, 5.19255443e 00, nan, 1.00000000e-09]])
If you want to get the exactly desired output, you need to set (1,3,3,4)
for J
.
>>> np.insert(P,(1,3,3,4),C1,axis=1)
array([[1.35961580e 03, nan, 1.35179719e 03, 1.30676673e 03,
nan, nan, 1.17569069e 02, nan,
5.19255443e 00, 5.19255443e 00, 5.19255443e 00, 1.00000000e-09]])
CodePudding user response:
import numpy as np
J = np.array([[1, 4, 5, 7]])
P = np.array([[1.35961580e 03, 1.35179719e 03, 1.30676673e 03, 1.17569069e 02,
5.19255443e 00, 5.19255443e 00, 5.19255443e 00, 1.00000000e-09]])
P = np.insert(P, J.tolist()[0], [np.nan], axis=1)
print("Pnew =", P)