2017-07-05 46 views
2

所有元素我已陣列,其中陣列中所有的元件的也數組:更改numpy的陣列,其最終成爲單獨的陣列,以漂浮的Python

a = [[array([ 4.15167139]) array([ 2.80260218]) array([ 3.34189103]) 
    array([ 3.73434426]) array([ 3.76504973]) array([ 3.91946708]) 
    array([ 2.850741]) array([ 1.9985034]) array([ 4.05191836]) 
    array([ 3.46145848]) array([ 2.99489689]) array([ 2.60462582]) 
    array([ 1.91031189]) array([ 2.90006744]) array([ 3.69799451]) 
    array([ 3.83314665]) array([ 4.42917628]) array([ 5.17647658]) 
    array([ 4.63462677]) array([ 4.69085313]) array([ 4.84746095]) 
    array([ 5.04396694]) array([ 5.10152712]) array([ 3.33442499]) 
    array([ 4.87380637]) ...]] 

我希望這是相同的形狀陣列,它現在是(20,96),但不是所有的數組是數組中的元素我只是想他們是浮動的:

a = [[ 4.15167139 2.80260218 3.34189103...4.87380637 ...]] 

什麼是遍歷數組和變革的最佳途徑從單個數組到浮點的所有元素?

+0

嘗試混合使用索引來移除多餘的[]和'concatenate'(或'stack')來連接數組。 – hpaulj

+2

這個數組是如何創建的?我認爲直接修改它的創作可能會更容易......而且可能更乾淨。 – Julien

+0

'a = np.array(a).astype(np.float)'? –

回答

1

使用索引以除去使用concatenatestack的[]

In [159]: array=np.array 
In [161]: a = [[array([ 4.15167139]), array([ 2.80260218]), array([ 3.34189103]), 
    ...: array([ 3.73434426]), array([ 3.76504973]), array([ 3.91946708])]] 
In [162]: len(a) 
Out[162]: 1 
In [163]: len(a[0]) 
Out[163]: 6 

頂層加入陣列的列表。

In [164]: np.stack(a[0]) 
Out[164]: 
array([[ 4.15167139], 
     [ 2.80260218], 
     [ 3.34189103], 
     [ 3.73434426], 
     [ 3.76504973], 
     [ 3.91946708]]) 
In [165]: np.concatenate(a[0]) 
Out[165]: 
array([ 4.15167139, 2.80260218, 3.34189103, 3.73434426, 3.76504973, 
     3.91946708]) 

根據需要重塑。

在這種情況下np.array也適用,但我發現concatenate方法更可靠。有時np.array只是產生一個對象數組。

In [166]: np.array(a[0]) 
Out[166]: 
array([[ 4.15167139], 
     [ 2.80260218], 
     [ 3.34189103], 
     [ 3.73434426], 
     [ 3.76504973], 
     [ 3.91946708]]) 
+0

在[161]對於ipython 3.5(windows)給出錯誤,TypeError:array()參數1必須是unicode字符,而不是列表。如何創建這樣的數組? – Rahul

+2

我不得不定義一個別名; 'array = np.array'。注意我還添加了逗號。 – hpaulj

1

這可能是np.concatenate是在hpaulj的answer說比較可靠,但在目前的情況下np.array使一個簡單的解決方案,因爲它保留了尺寸。但是,直接在當前數組上應用它會添加第三個維度。這可以通過切片刪除:

b = np.array(a)[:,:,0] 

它不必比這更復雜。