【问题标题】:Numpy resize or Numpy reshapeNumpy 调整大小或 Numpy 重塑
【发布时间】:2017-08-31 15:58:50
【问题描述】:

我一直在搜索 stackexchange 档案,似乎无法找到正确的答案...应该使用 reshape,应该使用 resize,但都失败了...

设置:3 个两种分辨率的 netCDF 文件...1 500 米,2 1000 米

需要调整大小或降低分辨率或重塑或任何正确的词是更高分辨率的文件:)

使用 gdalinfo 或 "print (np.shape(array))" 我们知道高分辨率文件的形状或大小为 (2907, 2331),而分辨率较低的数组的大小为 (1453, 1166)

所以我尝试了 np.resize (array, (1453,1166)) 和 np.reshape (array, (1453,1166)) 并收到如下错误:

ValueError: 无法将大小为 6776217 的数组重新整形为 (1453,1166)

当然,我使用了错误的术语/术语,对此我深表歉意......在命令行上做我需要做的事情就像 gdal_translate -outsize x y -of GTiff infile outfile 一样简单

请帮忙!

【问题讨论】:

    标签: python arrays numpy resize reshape


    【解决方案1】:

    都没有。

    Reshape 只会改变数据的形状,但不会改变总大小,因此您可以例如将形状 1x9 的数组重新整形为 3x3,但是不进入 2x4

    Resize 做类似的事情,但可以让你增加大小,在这种情况下,它将用正在调整大小的数组元素填充新空间。

    您有两个选择:编写您的函数以按照您希望的方式调整大小,或者使用 Python 图像库(PIL、Pillow...)之一来应用常用的图像调整大小函数。

    【讨论】:

    • 哇...非常简洁明了,谢谢 :) 我想我可能只需要调用 osgeo / gdal 就可以了,但会先尝试您建议的图像库之一,因为它会更快(我希望)...
    【解决方案2】:

    遇到了同样的问题:

      File "primes_test2audio.py", line 117, in <module>
      librosa.display.specshow(features.reshape(n_feat, n_frames) ,
      ValueError: cannot reshape array of size 9620 into shape (20,313)
    

    解决方案:除以 9620/20=481 你得到一个兼容的形状:

      shape of one sample in 2D:  (20, 481)
      shape of one sample flat: (9620,)
    

    n_frames = 481 # 每个样本的帧数

    n_features = 20 # mfcc 分析的系数个数

    【讨论】:

      猜你喜欢
      • 2021-03-05
      • 2021-01-11
      • 2014-01-10
      • 1970-01-01
      • 2018-06-15
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多