具体是怎么工作的?

How exactly work?

当我 运行 这个时,代码按预期工作,并给了我 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)

但是如果我将 reshape 的参数更改为 (200, 200),我会收到错误消息:

ValueError: total size of new array must be unchanged

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

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

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

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