2017-07-05 1 views
2

を浮くために個々のアレイとして終わるnumpyの配列内のすべての要素Iは、アレイ内のすべての要素も配列された配列があります。変更の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

余分な[]を削除するためにインデックスを混在させ、配列を結合するには '連結 '(または' stack')してみてください。 – hpaulj

+2

このアレイはどのように作成されましたか?私はその創作を直接修正する方が簡単かもしれないと思うし、おそらくもっときれいかもしれない。 – Julien

+0

'a = np.array(a).astype(np.float)'についてどうですか? –

答えて

1

使用索引付けは、配列のリストを結合するために使用concatenate又はstack

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

ipython 3.5(windows)の[161]では、 'TypeError:array()引数1はリストではなくUnicode文字でなければならない 'というエラーが返されます。どのようにそのような配列を作成するのですか? – Rahul

+2

別名を定義する必要がありました。 'array = np.array'です。通知私はまた、カンマを追加しました。 – hpaulj

1

それはnp.concatenateがhpauljのanswerに言ったように、より信頼性があるが、それは寸法を保持する限り、現在の場合にはnp.arrayは、簡単な解決策になりている可能性があります。ただし、現在の配列に直接適用すると、3次元が追加されます。これは、次のようにスライスすることで削除できます。

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

これ以上複雑である必要はありません。