omi*_*mid 2 python numpy multidimensional-array reshape keras
我想将图像的4d数组从(50,100,100,128)更改为(50,128,100,100),但是当我在重塑形状后绘制图像时,图像被更改了。所有图像都是来自50位患者的CT扫描图像,我想将它们用于3d Resnet卷积神经网络。此外,每个患者都有128片100 * 100像素的图像。
原来的形状:
data.shape
(50, 100, 100, 128)
Run Code Online (Sandbox Code Playgroud)
来自数据的图像
imgplot = plt.imshow(data[0,:,:,1])
plt.show()
Run Code Online (Sandbox Code Playgroud)
重塑后
imgplot = plt.imshow(data[0,:,:,1])
plt.show()
Run Code Online (Sandbox Code Playgroud)
imgplot = plt.imshow(rd [0,1,:,:])
plt.show()
Run Code Online (Sandbox Code Playgroud)
另外,我尝试了移调,但是没有改变
rd = data.reshape(-1,128,100,100)
rd.shape
(50, 128, 100, 100)
Run Code Online (Sandbox Code Playgroud)
array.transpose()与所需的轴顺序一起使用:
# original 4D array
In [98]: data = np.random.random_sample((50, 100, 100, 128))
# move last axis to second position; reshapes data but would still be a `view`
In [99]: reshaped_data = data.transpose((0, -1, 1, 2))
In [100]: reshaped_data.shape
Out[100]: (50, 128, 100, 100)
Run Code Online (Sandbox Code Playgroud)
如果在转置后确实想要数据的副本,则可以强制这样做:
In [106]: reshaped_data = data.transpose((0, -1, 1, 2)).copy()
In [107]: reshaped_data.flags
Out[107]:
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |