我具有相同的高度的2D numpy的陣列而不是寬度的列表:列表解析式的方法具有多於一個維度
list_of_arrays = [np.random.rand(3,4),np.random.rand(3,5),np.random.rand(3,6)]
我想建立一個新的數組,其中各列是我列表中的數組的隨機列。我可以用for循環來做到這一點,例如:
new_array = np.zeros((3,3))
for x in range(3):
new_array[:,x] = list_of_arrays[x][:,random.randint(0,list_of_arrays[x].shape[1])]
這對我來說並不乾淨。我想用類似列表理解的方法,例如
new_array = [list_of_arrays[x][:,random.randint(0,list_of_arrays[x].shape[1])] for x in range(3)]
這顯然返回一個列表,而不是根據需要返回一個數組。我可以將列表轉換爲一個數組,但增加了一個無關的中間值。有沒有簡單的方法來做到這一點?類似的問題,我已經看到使用1d數組使用numpy.fromiter,但不會在2維工作。
如果有人想提出完全不同的/更清潔/更有效的方法來解決這個問題,那也是值得讚賞的。
在'np.array'中包裝列表沒什麼問題。 'numpy'一直都是這樣。 – hpaulj 2014-10-01 22:59:52