发布
社区首页 >问答首页 >用插值重采样numpy数组

用插值重采样numpy数组
EN

Stack Overflow用户
提问于 2020-02-06 19:39:12
回答 1查看 167关注 0票数 0

我正在处理Python中的5个图像,这些图像已导入为numpy数组,并具有以下形状:

代码语言:javascript
代码运行次数:0
复制
for i in range(len(S_images)):
    print(S_images[i].shape)

(1, 1524, 5500)
(1, 1524, 5499)
(1, 1524, 5500)
(1, 1524, 5499)
(1, 1525, 5499)

我的目标是使用S_stack = np.stack(S_images)将它们堆叠在一起,但当然,由于形状的差异,我得到了错误:

代码语言:javascript
代码运行次数:0
复制
ValueError: all input arrays must have the same shape

我想要的是将数组重采样为常见形状(例如,(1, 1524, 5500)),同时选择一种重采样方法,如最近邻。

在找以前的论坛问答时,我看到过使用scipy.ndimage.zoom,但这通常是用来升级或降级的常规数据。在我的例子中,我只需要匹配的形状来允许堆栈。有什么建议吗?

例如,是否可以选择一个主数组并将其用作参考,其中所有其他数组都必须与其形状匹配,如果不是,将应用使用NN的重采样方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-06 20:05:32

我想出了一个解决方案,但我想知道从技术/科学的角度看它是否正确。这是解决我问题的好方法吗?实际上,它是在做我想做的事情...

代码语言:javascript
代码运行次数:0
复制
for i in range(len(S_images)):
    if S_images[i].shape[1] !=1524:
        S_images[i] = scipy.ndimage.zoom(S_images[i], (1, 1524/1525, 1),order=0, mode='nearest')

for i in range(len(S_images)):
    if S_images[i].shape[2] !=5499:
        S_images[i] = scipy.ndimage.zoom(S_images[i], (1, 1, 5499/5500 ),order=0, mode='nearest')


for i in range(len(S_images)):
    print(S_images[i].shape)

(1, 1524, 5499)
(1, 1524, 5499)
(1, 1524, 5499)
(1, 1524, 5499)
(1, 1524, 5499)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60094127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档