の場合:
配列([0を生成
size=3,4
A=np.zeros(size,int)
for i in range(size[0]):
for j in range(size[1]):
A[i,j] = i*4 + j # assign elements, don't append
、1、2、3]、 [4、5、6、7]、 [8、9、10、11])
しかしreshape
で、私は同じことを行うことができ、より高速
In [190]: x=np.arange(12)
In [191]: x
Out[191]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
In [192]: x.reshape(3,4) # may want to add a .copy()
Out[192]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
配列を作成するもう1つの一般的な方法は、リストに追加し、ループの最後に配列にすることです。
In [193]: alist=[]
In [195]: for i in range(3):
.....: ll = []
.....: for j in range(4):
.....: ll.append(i*4+j)
.....: alist.append(ll)
.....:
In [196]: alist
Out[196]: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
In [197]: np.array(alist)
Out[197]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
またはコンパクトリスト内包形式で
:
np.array([[i*4+j for j in range(4)] for i in range(3)])
私は配列としてそのj
反復処理を行うことができれば、これは速いかもしれない
for i in range(3):
alist.append(i*4+np.arange(4))
いっそのこと、私たちは両方の寸法、これを行う場合方法
np.arange(3)[:,None]*4 + np.arange(4)
これは、配列を埋めるための別の方法は、「フラット」バージョンに割り当てることである2列
In [209]: np.arange(3)*4, np.arange(4)
Out[209]: (array([0, 4, 8]), array([0, 1, 2, 3]))
の外農産物を作成するために、「放送」を使用しています:あなたはAPPENDを使用してはならない
A.flat[:]=np.arange(1,13)
静的な配列なので、numpyの配列には全くありません。 –
塗りつぶしと追加は、2つの異なる操作です。サンプルケースを使用し、探しているものを説明します。 – Divakar
@Divakar私は自分の投稿を編集しました。実際には、ループが示唆するように、私はデータを1次元配列( 'data_array')に格納しています。' data_array'の各要素を 'numpy'配列に入れたいです。 – user1611830