私の最初の答えでは、すべての値を表示します。 nonzerosだけで列配列を作成する方が簡単です。 np.where
は、トリックのすべての値について
In [1548]: I,J = np.nonzero(A) # np.where
In [1549]: Acol = np.column_stack((I,J,A[I,J]))
==========
ん:
はここでスタートです。 iterativeですが、私がコメントした通り、np.savetxt
もそうです。
In [1523]: A=np.arange(25).reshape(5,5)
In [1526]: list(np.ndenumerate(A))
Out[1526]:
[((0, 0), 0),
((0, 1), 1),
((0, 2), 2),
((0, 3), 3),
((0, 4), 4),
((1, 0), 5),
In [1528]: with open('txt','w') as f:
...: for (i,j),v in np.ndenumerate(A):
...: f.write('%d::%d::%d\n'%(i,j,v))
...:
In [45]: cat txt
0::0::0
0::1::1
0::2::2
0::3::3
0::4::4
1::0::5
我々は、インデックスからなる(N、3)アレイを作成し、A
の値を平坦化できました。しかしsavetxt
はまだ効果的に、それを繰り返すだろう:相続人
In [1535]: I,J = np.meshgrid(np.arange(A.shape[0]),np.arange(A.shape[1]),indexin
...: g='ij')
In [1536]: I
Out[1536]:
array([[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[3, 3, 3, 3, 3],
[4, 4, 4, 4, 4]])
In [1537]: Acol=np.column_stack((I.ravel(),J.ravel(),A.ravel()))
In [1538]: Acol
Out[1538]:
array([[ 0, 0, 0],
[ 0, 1, 1],
[ 0, 2, 2],
[ 0, 3, 3],
[ 0, 4, 4],
....
'savetxt'は入力2d配列の各行に対して反復処理を行い、その行をフォーマットして行として書き込みます。 – hpaulj