如何從生成器對象構(gòu)建numpy數(shù)組?讓我說明一下這個(gè)問題:>>> import numpy>>> def gimme():... for x in xrange(10):... yield x...>>> gimme()<generator object at 0x28a1758>>>> list(gimme())[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> numpy.array(xrange(10))array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>> numpy.array(gimme())array(<generator object at 0x28a1758>, dtype=object)>>> numpy.array(list(gimme()))array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])在這種情況下,gimme()是生成器,我要將其輸出轉(zhuǎn)換為數(shù)組。但是,數(shù)組構(gòu)造函數(shù)不會(huì)在生成器上進(jìn)行迭代,它只是存儲(chǔ)生成器本身。我想要的行為是來自numpy.array(list(gimme())),但是我不想支付同時(shí)擁有中間列表和最終數(shù)組的內(nèi)存開銷。有沒有更節(jié)省空間的方法?
3 回答

30秒到達(dá)戰(zhàn)場
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)stackoverflow結(jié)果背后的一個(gè)Google,我發(fā)現(xiàn)有一個(gè)numpy.fromiter(data, dtype, count)。默認(rèn)值count=-1從可迭代對象中獲取所有元素。它需要dtype明確設(shè)置。就我而言,這可行:
numpy.fromiter(something.generate(from_this_input), float)
添加回答
舉報(bào)
0/150
提交
取消