2012-10-17 502 views
1

我想要一個陣列的形狀爲(N,)dtype=object,所有陣列的形狀相同,shape,並創建一個數組與shape == (N,) + shape。我想知道是否有人知道這樣做的最佳方法。這是一個例子。摺疊陣列的嵌套陣列

import numpy as np 
array = np.empty(4, dtype=object) 
array[:] = [np.ones([3, 2])] 
array = np.array(array.tolist()) 
print array.dtype 
# float64 
print array.shape 
# (4, 3, 2) 
+1

會提示'concatenate',但實際上你的解決方案似乎已經對我最好了。如果你知道dtype,你可以給它,而不是使用'.tolist()'。 – seberg

回答

0

如果你已經知道你內心的陣列(這裏,(3,2))的形狀,可以簡化整個過程

subshape = (3,2) 
a = np.empty(tuple([N,]+list(subshape)), dtype=object) 
a[:] = np.ones(subshape) 

,可以讓你避免不必要的轉換到/從名單。


現在,假設你有一個(N,)對象陣列a其中每個元素是一個subshape float數組,你可以做:

a = np.vstack(a) 
a.shape = [N,] + list(subshape) 

或更簡單地說:

a = np.array(a.tolist(), dtype=float) 

.tolist但轉換可能不是非常有效。

+0

我想你誤解了這個問題。我已經有了一個shape =(N,)和dtype = object的數組,我想把它變成一個shape =(N,3,2)和dtype = float的數組。 –