簡體   English   中英

numpy:安排輸入和輸出向量的正確方法

[英]Numpy: proper way to arrange input and output vectors

我正在嘗試創建一個具有2列和多行的numpy數組。 第一列用於表示大小為3的輸入向量。第二列用於表示大小為2的輸出向量。

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

我期望: arr[:, 0].shape返回(2,3),但它返回(2,)

使用numpy將輸入和輸出向量排列成矩陣的正確方法是什么?

如果確定每列中的元素都具有相同的大小/長度,則可以選擇然后使用numpy.row_stack堆疊結果:

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

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

所以,代碼

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

創建一個對象數組,索引第一列將為您提供兩行,每行中有一個對象,這占了大小。 為了得到您想要的東西,您需要將其包裝在類似

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')])

創建一個結構化數組,其字段為inout ,分別由3個整數和2個浮點數組成。 可以照常訪問行,

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 )。 我無法添加任何細節,因為我打算在項目中使用它們已有一段時間了,但是沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM