web-dev-qa-db-ja.com

ndarrayを配列に変換する方法は?

私はpandas.Seriesとnp.ndarrayを使用しています。

コードはこんな感じ

>>> t
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> pandas.Series(t)
Exception: Data must be 1-dimensional
>>>

そして、私はそれを1次元配列に変換しようとしました:

>>> tt = t.reshape((1,-1))
>>> tt
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

ttは、二重の「[」があるため、依然として多次元です。

それでは、ndarrayを実際に配列に変換するにはどうすればよいですか?

検索後、 同じであると言う 。しかし、私の状況では、彼らは同じように機能していません。

25
SolessChong

別の方法は、 np.ravel を使用することです。

>>> np.zeros((3,3)).ravel()
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

ravelに対するflattenの重要性はravelが必要な場合にのみデータをコピーし、通常ビューを返しますが、flattenは常にデータのコピーを返します。

Reshapeを使用して配列を平坦化するには:

tt = t.reshape(-1)
28
Daniel

.flatten を使用します。

>>> np.zeros((3,3))
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> _.flatten()
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

編集:指摘したように、これはすべての場合に入力のコピーを返します。コピーを回避するには、@ Ophionが示唆する.ravelを使用します。

4
nneonneo
tt = array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

oneDvector = tt.A1

これは、二重括弧の問題を解決した唯一のアプローチです。つまり、1次元配列とndマトリックスへの変換です。

1
Jemshid KK