0

numpyで配列を生成するwhileステートメントがあります

while(i<int(sp)): 
   body=(np.bincount(un[i].ravel().astype('int'), weights=step_periods[i].ravel())) 
   print(body) 
   i=i+1

各反復により、次のような配列が生成されます。

1st    [  0.   0.   0.  30.]

2nd    [  0.   0.  21.  18.  15.]

3rd    [  0.  24.  27.   0.   3.]

私の最初の問題は、最初の配列の最後の値が「0」の場合、配列から除外されることです。それを変換する方法はありますか?

[  0.   0.   0.  30.]

に:

[  0.   0.   0.  30.  0.]

そこから、各配列をマスター配列に追加して、最終的な出力が次のようになるようにします。

    [[  0.   0.   0.  30.  0.0],

    [  0.   0.  21.  18.  15.],

   [  0.  24.  27.   0.   3.]]

追加とvstackを調べましたが、「while」ステートメントで機能させることができません。または、末尾の「0」が省略されているため、すべて同じサイズではない可能性があります。

ありがとう!

4

1 に答える 1

1

1つの解決策-の長さbodyが常に5未満(または等しい)になることを保証できる場合は、配列を事前に割り当てることができます。

import numpy as np
my_array = np.zeros((int(sp)-i,5),dtype=int)
for ii in range(i,int(sp)):
    body=(np.bincount(un[i].ravel().astype('int'), weights=step_periods[i].ravel())) 
    my_array[ii,:len(body)]=body 

本体の幅が広すぎるかどうかを確認するチェックを追加して、古い部分を割り当てて新しい配列を作成することもできます...しかし、その時点で、おそらくスタッキング操作が必要です。

于 2012-07-30T17:21:25.953 に答える