2017-05-13 17 views
1

私は,Iおよびerrorと呼ばれる形状(250L,)の3つのnumpy配列を持っています。 3つの配列をテキストファイルに保存して、各配列がファイルの1つの列になるようにしたい。これまでのところ、私は次のことを試してみました:3つの1Dアレイを2次元アレイに結合しますか?

IndexError: axis 1 out of bounds [0, 1)

はどのような形状(250,3)配列を作るために3つの配列を組み合わせることができます:最初の配列は1次元であるため、

DataArray = np.concatenate((c,I,Error),axis=1) 
np.savetxt('VaryingC.txt',DataArray) 

これはエラーを返しますか?

+0

あなたは後にしていますか? – MaxU

答えて

2

concatenateは、新しいものを挿入しstack、既存の軸を結合します

DataArray = np.stack((c,I,Error),axis=1) 
1

あなたが探しているようだ:

DataArray = np.column_stack((c,I,Error)) 

タイミング:

In [201]: a1 = np.random.randint(10**6, size=10**6) 

In [202]: a2 = np.random.randint(10**6, size=10**6) 

In [203]: a3 = np.random.randint(10**6, size=10**6) 

In [204]: %timeit np.column_stack((a1,a2,a3)) 
100 loops, best of 3: 14.1 ms per loop 

In [205]: %timeit np.stack((a1,a2,a3),axis=1) 
100 loops, best of 3: 14.2 ms per loop 

In [206]: %timeit np.transpose([a1,a2,a3]) 
100 loops, best of 3: 10.7 ms per loop 
1

あなたのケースでは、あなた新しいAを作成できるrrayし、それを移調:あなたは1を自分で作成する必要はありませんので、

np.transpose([c, I, Error]) 

np.transpose

は自動的に、新しい配列を作成します。例えば

: `np.column_stack((C、I、エラー))`:

>>> import numpy as np 

>>> a = np.array([1, 1, 1, 1, 1]) 
>>> b = np.array([2, 2, 2, 2, 2]) 
>>> c = np.array([3, 3, 3, 3, 3]) 

>>> DataArray = np.transpose([a, b, c]) 
>>> DataArray 
array([[1, 2, 3], 
     [1, 2, 3], 
     [1, 2, 3], 
     [1, 2, 3], 
     [1, 2, 3]]) 

>>> DataArray.shape 
(5, 3) 
+1

あなたの解決策は、提供されたものの中で最も速いと思われる:) – MaxU

+1

@MaxUタイミングをとってくれてありがとう!それが最も速いということは私を驚かせることはありません:すべての「転置」は最も一般的な解決策です。 'transpose'では結果がF連続であり、' stack'と 'column_stack'はC連続配列を返します。 – MSeifert