python - insert numpy.float64 element in a numpy array -
i trying insert numpy float in numpy ndarray. code , output is:
dos = np.sum(atom[:, :, 1:],axis=0) print("type(dos)") print(type(dos)) print("dos.shape") print(dos.shape) print("dos[15] before") print(dos[15]) print("type(atom[1,0,0])") print(type(atom[1,0,0])) print("atom[1,0,0]") print(atom[1,0,0]) in range(301): dos2=np.insert(dos, 0, atom[1,0,0]) print("dos[15] after ") print(dos2[15]) print("type(dos2)") print(type(dos2))
and corresponding output is:
type(dos) <class 'numpy.ndarray'> dos.shape (301, 18) dos[15] before [ -9.75080030e-02 -8.37110240e-02 -3.13760517e-03 -2.70089494e-03 -2.07915835e-03 -1.77532740e-03 -2.03548911e-03 -1.73346437e-03 -1.98000973e-04 -1.64015415e-04 -1.99115166e-04 -1.65569761e-04 -9.07381374e-05 -7.37546825e-05 -1.48250176e-04 -1.22108731e-04 -1.18854648e-04 -9.70416840e-05] type(atom[1,0,0]) <class 'numpy.float64'> atom[1,0,0] -4.11 dos[15] after 0.0 type(dos2) <class 'numpy.ndarray'>
where expected result is:
[ -4.11 -9.75080030e-02 -8.37110240e-02 -3.13760517e-03 -2.70089494e-03 -2.07915835e-03 -1.77532740e-03 -2.03548911e-03 -1.73346437e-03 -1.98000973e-04 -1.64015415e-04 -1.99115166e-04 -1.65569761e-04 -9.07381374e-05 -7.37546825e-05 -1.48250176e-04 -1.22108731e-04 -1.18854648e-04 -9.70416840e-05]
from numpy documentation, cant see went wrong. kindly help.
from doc mentionned:
a copy of arr values inserted. note insert not occur in-place: new array returned. if axis none, out flattened array.
this means loop:
for in range(301): dos2=np.insert(dos, 0, atom[1,0,0])
does 300
useless operations, inserts single value, , dos2
contains 301*18
values of dos
plus 1 value (flattened):
>>> dos = np.random.random((3, 3)) >>> dos2 = np.insert(dos, 0, 12) >>> dos2 array([ 12. , 0.30211688, 0.39685661, 0.89568364, 0.14398144, 0.39122099, 0.8017827 , 0.35158563, 0.18771122, 0.89938571]) >>> dos2[5] 0.39122099250162556
what want happend value each of elements in dos:
>>> dos2 = np.empty((dos.shape[0], dos.shape[1] + 1), dtype=dos.dtype) >>> in range(dos.shape[0]): ... dos2[i] = np.insert(dos[i], 0, 12) ... >>> dos2 array([[ 12. , 0.30211688, 0.39685661, 0.89568364], [ 12. , 0.14398144, 0.39122099, 0.8017827 ], [ 12. , 0.35158563, 0.18771122, 0.89938571]])
which can expressed as:
>>> dos2 = np.empty((dos.shape[0], dos.shape[1] + 1), dtype=dos.dtype) >>> dos2[:, 0] = 12 >>> dos2[:, 1:] = dos
Comments
Post a Comment