我在將陣列設定為正確的形狀以將其用作卷積神經網路的輸入時遇到了一些問題:
我的陣列具有 shape (100,64,64),但我需要它是(100,64,64,1)。我意識到它看起來有點奇怪,但我基本上想將每個條目打包到一個單獨的陣列中。
一個簡化的例子,具有2D陣列,其中,類似的將是從(3,3)到(3,3,1):
[[0,1,0], [[[0],[1],[0]],
[1,1,1], [[1],[1],[1]],
[0,0,1]] [[0],[0],[1]]]
有沒有一種方便的方法可以使用 numpy 來做到這一點?
我嘗試使用函式numpy.reshape:我知道如何“添加”另一個陣列來包裝原始陣列。
import numpy as np
data = data.reshape((1,) data.shape)
這給出了data.shape:的輸出(1,100,64,64)。有沒有辦法在“內端”添加維度?
如果我嘗試data.reshape(data.shape (,1)),我會收到無效的語法錯誤。
uj5u.com熱心網友回復:
正如檔案指出的那樣,當形狀與您的兼容時,您也可以直接更改陣列的形狀:
a = np.array([
[0, 1, 0],
[1, 1, 1],
[0, 0, 1]
])
a.shape = (1,)
a
# array([[[0], [1], [0]],
# [[1], [1], [1]],
# [[0], [0], [1]]])
uj5u.com熱心網友回復:
您可以使用以下方法重塑:
a[:,:,None]
或者,以編程方式(適用于任意數量的維度):
a.reshape((*a.shape,1))
例子
a = np.array([[0,1,0],
[1,1,1],
[0,0,1]])
# array([[0, 1, 0],
# [1, 1, 1],
# [0, 0, 1]])
a[:,:,None] # or a.reshape((*a.shape,1))
# array([[[0], [1], [0]],
# [[1], [1], [1]],
# [[0], [0], [1]]])
uj5u.com熱心網友回復:
您可以將省略號加號傳遞None給陣列索引器:
>>> a
array([[0, 1, 0],
[1, 1, 1],
[0, 0, 1]])
>>> a[..., None]
array([[[0],
[1],
[0]],
[[1],
[1],
[1]],
[[0],
[0],
[1]]])
(歸功于@hpaulj)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/399726.html
上一篇:如何使用JSList顯示分頁?
