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

Popular posts from this blog

sql - invalid in the select list because it is not contained in either an aggregate function -

Angularjs unit testing - ng-disabled not working when adding text to textarea -

How to start daemon on android by adb -