2017-01-08 8 views
-1

ループ内に既存のnumpy配列に新しい行を追加しようとしています。私は追加を含むメソッドを試して、連結し、またvstackは私の望む結果を与えることに終わりません。numpy配列に新しい行を追加する

私は次のことを試してみました:

for _ in col_change: 
if (item + 2 < len(col_change)): 
    arr=[col_change[item], col_change[item + 1], col_change[item + 2]] 
    array=np.concatenate((array,arr),axis=0) 
    item+=1 

私はまた、最も基本的な形式でそれを試してみましたが、それはまだ私に空の配列を提供します。

array=np.array([]) 
newrow = [1, 2, 3] 
newrow1 = [4, 5, 6] 
np.concatenate((array,newrow), axis=0) 
np.concatenate((array,newrow1), axis=0) 
print(array) 

私は出力になりたい[[1,2,3]、[4,5,6] ...]

+0

'array = np.concatenate((array、newrow)、axis = 0)'と 'array = np.concatenate((array、newrow1)、axis = 0)'です。それは参照によって動作しません。操作の前に 'array ='を指定する必要があります。 – Abdou

+1

すでに回答済み:\ [1]:http://stackoverflow.com/questions/3881453/numpy-add-row-to-array – Gyanshu

+0

私もそれを試しましたが、このような行の最後に追加されてしまいます[ 1. 2. 3. 4. 5. 6.] – blaziken105

答えて

0

あなたが[[1,2,3],[4,5,6]]をしたい場合、私はappendせずにあなたの選択肢を提示することができます:np.arangeし、それを再構築:

>>> import numpy as np 

>>> np.arange(1,7).reshape(2, 3) 
array([[1, 2, 3], 
     [4, 5, 6]]) 

またはビッグ配列を作成し、手動(またはループ内で)それを埋める:

>>> array = np.empty((2, 3), int) 
>>> array[0] = [1,2,3] 
>>> array[1] = [4,5,6] 
>>> array 
array([[1, 2, 3], 
     [4, 5, 6]]) 

あなたの例のメモ:

結果を保存するのを忘れた場合は、array = np.concatenate((array,newrow1), axis=0)にしてください。それは正しく動作しますが、配列はもう空ではありません。最初の例はひどくインデントされていて、変数やその問題を知らずにデバッグするのは難しいです。

+0

配列を連結して再構成しました。 – blaziken105

1

インクリメンタル配列を構築するための正しい方法は、アレイに起動しないことです。

alist = [] 
alist.append([1, 2, 3]) 
alist.append([4, 5, 6]) 
arr = np.array(alist) 

これは、本質的に小さなを作るのと同じ

arr = np.array([ [1,2,3], [4,5,6] ]) 

として最も一般的な方法である(または大)サンプル配列。

concatenate(hstack、vstackなど)のいくつかのバージョンを使用する正当な理由がある場合でも、リスト内のコンポーネントを収集し、concatanteを1回実行する方がよいでしょう。

関連する問題