2016-06-28 8 views
0

numpyのfloatをnumpyのndarrayに挿入しようとしています。 コードと出力される。numpy.float64要素をnumpy配列に挿入する

と対応する出力である:期待される結果であり

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'> 

[ -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] 

numpyのdocumentationから、私はここで参照カント私は間違っていた。 助けてください。 mentionned DOCから

答えて

2

挿入された値とARRのコピー。インサートがインプレースで行われないことに注意してください。新しい配列が返されます。 axisがNoneの場合、outは平坦な配列です。

300無用の操作をい、その後、単一の値を挿入し、dos2dos301*18値プラス1つの値(平坦化)が含まれます:

これはあなたのループがあることを意味

>>> 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 

あなたはおそらく、その値を要素のそれぞれに起こすことです。doの中の S:単にとして表現することができる

>>> dos2 = np.empty((dos.shape[0], dos.shape[1] + 1), dtype=dos.dtype) 
>>> for i 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]]) 

:あなたは、すでにフラット配列の先頭に単一の値を挿入するように、あなたの「期待結果」から

>>> dos2 = np.empty((dos.shape[0], dos.shape[1] + 1), dtype=dos.dtype) 
>>> dos2[:, 0] = 12 
>>> dos2[:, 1:] = dos 
1

はそれが見えます。これを行うには、forループを使用する必要はありません。

>>> insert_value = 100 
>>> orig_array = np.array([1, 2, 3, 4, 5]) 
>>> final_array = np.insert(orig_array, 0, insert_value) 
>>> print(final_array) 
[100 1 2 3 4 5] 
関連する問題