0

私はNumPyから始めています。

np.array2 つのqueuとが与えられた場合new_path:

queu = [ [[0 0]
          [0 1]]
       ]

new_path = [ [[0 0]
              [1 0]
              [2 0]]
           ]

私の目標は、以下を取得することですqueu:

queu = [ [[0 0]
          [0 1]]
         [[0 0]
          [1 0]
          [2 0]]
       ]

私はもう試した:

np.append(queu, new_path, 0)

np.vstack((queu, new_path))

でもどちらも上げてる

連結軸を除くすべての入力配列の次元は正確に一致する必要があります

NumPy の哲学が理解できませんでした。私は何を間違っていますか?

4

3 に答える 3

1

あなたが必要とするものはnp.hstack

In [73]: queu = np.array([[[0, 0],
                            [0, 1]]
                         ])
In [74]: queu.shape
Out[74]: (1, 2, 2)

In [75]: new_path = np.array([ [[0, 0],
                                [1, 0],
                                [2, 0]]
                             ])

In [76]: new_path.shape
Out[76]: (1, 3, 2)

In [81]: np.hstack((queu, new_path))
Out[81]: 
array([[[0, 0],
        [0, 1],
        [0, 0],
        [1, 0],
        [2, 0]]])
于 2016-12-24T15:37:57.597 に答える
1
In [741]: queu = np.array([[[0,0],[0,1]]])
In [742]: new_path = np.array([[[0,0],[1,0],[2,0]]])
In [743]: queu
Out[743]: 
array([[[0, 0],
        [0, 1]]])
In [744]: queu.shape
Out[744]: (1, 2, 2)
In [745]: new_path
Out[745]: 
array([[[0, 0],
        [1, 0],
        [2, 0]]])
In [746]: new_path.shape
Out[746]: (1, 3, 2)

形状が (1,2,2) と (1,3,2) の 2 つの配列を定義しました。これらの形状について戸惑う場合は、基本的なnumpy紹介の一部を読み直す必要があります。

hstackvstackおよびappendすべての呼び出しconcatenate。3D 配列でそれらを使用すると、問題が混乱するだけです。

一方のサイズが 2 で、他方のサイズが 3 である 2 番目の軸で結合すると、(1,5,2) 配列が生成されます。(これは と同等ですhstack)

In [747]: np.concatenate((queu, new_path),axis=1)
Out[747]: 
array([[[0, 0],
        [0, 1],
        [0, 0],
        [1, 0],
        [2, 0]]])

軸 0 (vstack) で結合しようとすると、次のエラーが発生します。

In [748]: np.concatenate((queu, new_path),axis=0)
....
ValueError: all the input array dimensions except for the concatenation axis must match exactly

連結軸は0ですが、軸1の次元が異なります。したがって、エラー。

ターゲットは有効な numpy 配列ではありません。それらをリストにまとめることができます:

In [759]: alist=[queu[0], new_path[0]]
In [760]: alist
Out[760]: 
[array([[0, 0],
        [0, 1]]), 
 array([[0, 0],
        [1, 0],
        [2, 0]])]

またはオブジェクト dtype 配列 - しかし、それはより高度numpyです。

于 2016-12-24T17:54:46.213 に答える
0

をどのように設定したかは完全にはわかりませんarrayが、その音から、np.vstack実際に探していることを行う必要があります。

In [30]: queue = np.array([0, 0, 0, 1]).reshape(2, 2)

In [31]: queue
Out[31]:
array([[0, 0],
       [0, 1]])

In [32]: new_path = np.array([0, 0, 1, 0, 2, 0]).reshape(3, 2)

In [33]: new_path
Out[33]:
array([[0, 0],
       [1, 0],
       [2, 0]])

In [35]: np.vstack((queue, new_path))
Out[35]:
array([[0, 0],
       [0, 1],
       [0, 0],
       [1, 0],
       [2, 0]])
于 2016-12-24T15:29:10.050 に答える