我想更改python中读取数组的顺序,是否必须使用整形?

2024-05-16 22:48:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我读了一个tif图像(3D堆栈),它的原始大小是100x120x150(示例)。你知道吗

但是,当我进口这个的时候,这个尺寸是150 X 120 X 100。 我试着用矩阵。重塑,但我发现如果我使用这个重塑,它的元素顺序会改变。你知道吗

import numpy as np
from skimage import io

# read the image stack
fname = '100x120x150.tif'
data = io.imread(fname)
data.shape

我要做的是更改读取顺序,同时保持元素顺序。所以,导入之后,我想看看数据.shape将100X120X150作为原始尺寸订单。你知道吗


Tags: io图像importnumpy元素示例data顺序
1条回答
网友
1楼 · 发布于 2024-05-16 22:48:45

尽管np.swapaxes可能是答案的解决方案,但我建议编写一个函数来显示原始大小信息并保持数据不变。你知道吗

例如,我从SCIFIO中获取一个tif文件(focal1.tif)胚状体.zip尺寸为425*434*205):

import numpy as np
import matplotlib.pyplot as plt
from skimage import io

fname = 'focal1.tif'
data = io.imread(fname)

np.shape(data) #shows (205, 434, 425)
data[0] # The first layer in original Z direction

plt.imshow(data[0], cmap = "gray",  aspect = 'equal')
plt.colorbar()
plt.show()
print('Shape of matrix projection:',np.shape(data[0])) # shows (434, 425)

Image Link

使用data[number of slice]可以很容易地绘制X-Y平面横截面。你知道吗


并添加一个显示原始大小信息的函数:

def pic_size(data_matrix):
    size = print('size of image: (',np.shape(data_matrix)[2],',',np.shape(data_matrix)[1],',',np.shape(data_matrix)[0],')')
    return size
pic_size(data) #shows size of image: ( 425 , 434 , 205 )

顺便说一下,重塑不是一个好主意,它给出了一个图像与点,似乎在周期性安排,但没有任何有用的信息。你知道吗

Image Link

相关问题 更多 >