2017-09-08 13 views
0

2列と複数行のnumpy配列を作成しようとしています。最初の列は、サイズ3の入力ベクトルを表すことを意味している第2列は、私は期待していた2Numpy:入力ベクトルと出力ベクトルを配置する適切な方法

arr = np.array([ 
    [np.array([1,2,3]), np.array([1,0])] 
    [np.array([4,5,6]), np.array([0,1])] 
]) 

大きさの出力ベクトル表現することを意味する:arr[:, 0].shape (3、2)を返すことを、それが返さ(2、)

入力ベクトルと出力ベクトルをnumpyを使用して行列に配置する適切な方法は何ですか?

+2

行の長さが一致しないことをお勧めします。あなたの使用例は何ですか? – nos

+0

単純なニューラルネットワーク。最初の列は入力フィーチャを表します。第2列は出力確率を表す。 – coolscitist

答えて

1

あなたは、各列の要素が同じサイズ/長さを持っていることを確認している場合は、あなたが選択してnumpy.row_stackを使用して結果をスタックすることができます:だから

np.row_stack(arr[:,0]).shape 
# (2, 3) 

np.row_stack(arr[:,1]).shape 
# (2, 2) 
0

、コード

arr = np.array([ 
[np.array([1,2,3]), np.array([1,0])], 
[np.array([4,5,6]), np.array([0,1])] 
]) 

を作成します最初の列をインデックスするオブジェクト配列は、サイズを考慮して1つのオブジェクトを持つ2つの行を返します。あなたが望むものを得るには、何かのようにそれを包む必要があります。

np.vstack(arr[:, 0]) 

これは、最初の列のオブジェクトから配列を作成します。これはあまり便利ではありません。

io = {'in': np.array([[1,2,3],[4,5,6]]), 
'out':np.array([[1,0], [0,1]]) 
} 

構造化された配列は、両方のビットを提供します。作成は

arr = np.array([ 
    (1,2,3), (1,0)), 
    ((4,5,6), (0,1)) ], 
    dtype=[('in', '3int64'), ('out', '2float64')]) 

は、それぞれ3つの整数と浮動小数点数2からなるフィールドinoutで構成アレイを作成し、所与例えば、ビットトリッキーです。行は、通常通りアクセスすることができ

In[73]: arr[0] 
Out[74]: ([1, 2, 3], [ 1., 0.]) 

またはフィールド名

In [73]: arr['in'] 
Out[73]: 
array([[1, 2, 3], 
    [4, 5, 6]]) 

numpyのマニュアルは、多くの詳細を持っている(https://docs.scipy.org/doc/numpy-1.13.0/user/basics.rec.html)によって

。私はしばらくの間それらをプロジェクトで使用しようとしていたが、そうしていないので詳細を追加することはできません。

関連する問題