私は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を実際に配列に変換するにはどうすればよいですか?
検索後、 同じであると言う 。しかし、私の状況では、彼らは同じように機能していません。
別の方法は、 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)
.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
を使用します。
tt = array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
oneDvector = tt.A1
これは、二重括弧の問題を解決した唯一のアプローチです。つまり、1次元配列とndマトリックスへの変換です。