究竟如何工作?

时间:2015-02-10 15:23:44

标签: python numpy random reshape

当我运行它时,代码按预期工作,并给我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图像返回?

1 个答案:

答案 0 :(得分:3)

您可以将10000点重塑为100x100,不能将10000点重塑为200x200。这是简单的数学。您必须将通话更改为

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

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