2015-02-10 83 views
-3

當我運行此,代碼它按預期工作,給我10張與100×100尺寸:如何工作?

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的圖像?

+0

不是一個答案,但如果你只是想創建一個隨機寬度的圖像,你可以簡單地使用'size ='選項,而不是重塑:'im = np.random.random_integers(0,255,size =(height,width))' – 2015-02-10 15:29:19

+0

感謝您的答案我正在學習到底發生了什麼,它真正理解了代碼!謝謝! – 2015-02-10 15:34:39

回答

3

您可以將10000點重塑爲100x100,無法將10000點重塑爲200x200。這是簡單的數學。你必須要你的電話改變

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

注意你現在正在取樣40000(200 * 200)所指出的,而不是10000(100 * 100)

+0

完美謝謝你的答案!現在我明白它發生了什麼! – 2015-02-10 15:35:11

+2

@NicoCarosio歡迎來到堆棧溢出。務必提出您認爲有幫助的投票問題,並接受(用綠色選中標記)最佳解決問題的答案。 – 2015-02-10 15:38:53