如何將 (55, 11) numpy 陣列重塑為 (55, 11, 1) numpy 陣列?
嘗試:
- 簡單地做
numpy_array.reshape(-1, 1)沒有任何回圈會產生一個不是 3D 的平面陣列。 - 以下
for loop產生“無法廣播錯誤”:
for i in range(len(numpy_array)):
numpy_array[i] = numpy_array[i].reshape(-1, 1)
uj5u.com熱心網友回復:
也許您正在尋找 numpy.expand_dims(https://numpy.org/doc/stable/reference/generated/numpy.expand_dims.html)?
import numpy
a = numpy.random.rand(55,11)
print(a.shape) # 55,11
print(numpy.expand_dims(a, 2).shape) # 55, 11, 1
uj5u.com熱心網友回復:
將新軸添加到陣列
my_array = np.arange(55*11).reshape(55,11)
my_array.shape
# (55, 11)
# add new axis
new_array = my_array[...,None]
new_array.shape
# (55, 11, 1)
也可以指定新的形狀reshape:
new_array = my_array.reshape(*my_array.shape, 1)
new_array.shape
# (55, 11, 1)
uj5u.com熱心網友回復:
答案之一建議使用expand_dims. 這是一個很好的答案,但是如果您查看它的代碼,并去掉一些一般性,它所做的就是:
In [409]: a = np.ones((2,3)); axis=(2,)
...: out_ndim = 2 1
...: shape_it = iter(a.shape)
...: shape = [1 if ax in axis else next(shape_it) for ax in range(out_ndim)]
In [410]: shape
Out[410]: [2, 3, 1]
后跟一個return a.reshape(shape).
換句話說,函式呼叫只是隱藏了顯而易見的,將 (x,y) 擴展為 (x,y,1)
a.reshape(x,y,1)
您是否正在尋找類似于-1in的 3d '魔法' numpy_array.reshape(-1, 1)?
我個人喜歡用來None添加尺寸,所以更喜歡其他答案[...,None]。但從功能上來說都是一樣的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487605.html
上一篇:如何從多個變數生成組合?
下一篇:生成隨機值并將結果附加到下一列
