【问题标题】:How exactly work?具体是如何工作的?
【发布时间】:2015-04-10 16:53:20
【问题描述】:

当我运行它时,它会按预期工作,并为我提供 10 张尺寸为 100x100 的图像:

import numpy as np
for i in range(10):
    im = np.random.random_integers(0, 255, 10000).reshape((100, 100))
    misc.imsave('random_%03d.png' % i, im)

但是如果我将参数更改为 (200, 200),我会收到一个错误:

ValueError: total size of new array must be unchanged

为什么会这样?为什么没有返回 200x200 的图像?

【问题讨论】:

  • 不是一个答案,但如果你只想创建一个随机的宽高图像,你可以简单地使用size= 选项,而不是重塑:im = np.random.random_integers(0, 255, size=(height, width))
  • 感谢您的回答,我正在了解这里到底发生了什么,因为它真正理解了代码!谢谢!

标签: python numpy random reshape


【解决方案1】:

您可以将 10000 点重新整形为 100x100,但不能将 10000 点重新整形为 200x200。这是简单的数学。您必须将呼叫更改为

im = np.random.random_integers(0, 255, 40000).reshape((200, 200))

请注意,您现在采样的是 40000 (200*200) 点而不是 10000 (100*100)

【讨论】:

  • 完美感谢您的回答!现在我明白发生了什么!
  • @NicoCarosio 欢迎堆栈溢出。请务必对您认为有帮助的问题进行投票,并接受(带有绿色复选标记)最能解决您的问题的答案。
猜你喜欢
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
相关资源
最近更新 更多