在为NumPy计算准备数据期间.我很好奇构建方式:
myarray.shape => (2,18,18)
Run Code Online (Sandbox Code Playgroud)
从:
d1.shape => (18,18)
d2.shape => (18,18)
Run Code Online (Sandbox Code Playgroud)
我尝试使用NumPy命令:
hstack([[d1],[d2]])
Run Code Online (Sandbox Code Playgroud)
但它看起来不起作用!
Dan*_*l G 29
刚刚做的d3 = array([d1,d2])似乎对我有用:
>>> from numpy import array
>>> # ... create d1 and d2 ...
>>> d1.shape
(18,18)
>>> d2.shape
(18,18)
>>> d3 = array([d1, d2])
>>> d3.shape
(2, 18, 18)
Run Code Online (Sandbox Code Playgroud)
hstack和vstack不会改变数组的维数:它们只是将它们"并排".因此,组合二维阵列会创建一个新的二维阵列(而不是一个3D阵列!).
你可以做丹尼尔建议的(直接使用numpy.array([d1, d2])).
您也可以在堆叠数组之前将数组转换为3D数组,方法是为每个数组添加一个新维度:
d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ]) # shape = (2, 18, 18)
Run Code Online (Sandbox Code Playgroud)
实际上,d1[newaxis,...].shape == (1, 18, 18)您可以直接堆叠两个3D数组并获得所需的新3D数组(d3).
小智 8
arr3=np.dstack([arr1, arr2])
Run Code Online (Sandbox Code Playgroud)
arr1, arr2 是二维数组shape (256,256), arr3:shape(256,256,2)
该函数提供了很多多功能性np.stack()。你可以这样使用它:
>>> d3 = np.stack([d1, d2])
>>> d3.shape
(2, 18, 18)
Run Code Online (Sandbox Code Playgroud)
但是,您也可以指定数组连接的轴。因此,如果您想加入 RGB 图像的通道,您可以使用:
>>> rgb = np.stack([r, g, b], axis=-1) # r, g and b each have shape (18, 18)
>>> rgb.shape
(18, 18, 3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16914 次 |
| 最近记录: |