2016-03-23 13 views
0

私はRでコーディングしていましたが、今は自分の道を見つけようとしていました。私はほとんどの時間リストを使用してきましたが、今は何もしません。何とかこれはRとはかなり違っているように思えますし、ほとんどの場合、入力配列をさまざまな形から放送するという問題にぶつかります。たぶん次のコードで何がうまくいかないのか分かりましたら、numpyが何をしようとしているのか、どのように配列の特定の部分に対処できるのかを理解することができます。Numpy:行列のような配列に項目を追加する

import numpy as np 

a = np.array((1,2,3,4)) 
b = np.array((2,4,6,8)) 
c = np.array((3,6,9,12)) 

myArray = np.asarray((a,b,c)) 

ここで、各行をmyArrayに追加したいと思います。私はこの試みた:

for i in range(myArray.shape[0]): 
    myArray[i] = np.append(myArray[i,:], np.mean(myArray[i,:])) 

を、私は「それはサイズ4の古い配列に新しい項目を絞るしようと、私は理解(4)の形状に形状(5)からの入力配列を放送することができませんでし取得、一方。 ?

[In] print myArray 
[Out] [[1.0 2.0 3.0 4.0 2.5] 
     [2.0, 4.0, 6.0, 8.0, 5.0] 
     [3.0, 6.0, 9.0, 12.0, 7.5]] 

答えて

2

.mean(1)で行にわたる平均/平均値を取得し、入力と一緒に、これらのスタック:私は

私の所望の出力は次のようになりますが、ことをどのように行うのですかにそれを追加したいと思います2列の配列以下に示すようにループ内でこれを行うための

np.column_stack((myArray,myArray.mean(1))) 

、あなたは、初期化して保存する必要があります - - ので、同じようnp.column_stackとARブロック」、

m,n = myArray.shape    # Get shape of input array 
# Define output array with same rows as input, but one more column in it 
myArrayOut = np.zeros((m,n+1))  
for i in range(myArray.shape[0]): 
    # Store each row alongwith its mean as the last element 
    myArrayOut[i] = np.append(myArray[i,:], np.mean(myArray[i,:])) 
+0

私は質問を更新して、コメントを追加所望の出力。 column_stackは素晴らしいようですが、ループでも適用できますか?私はこれらの配列に異なる値を加えなければならないかもしれません 更新:私はすべての希望の値と列スタックされたmyArrayとdを含むリスト "d"を計算しました。それは機能しますが、追加する各アイテムの新しいリストを作成する必要があります。たぶん、簡単な方法がありますか? – offeltoffel

+0

@offeltoffelだから、配列のリスト、または出力としての単一の配列を探していますか? – Divakar

+0

単一アレイ出力が最も便利です。 「初期化と保存」の考え方は素晴らしいです。最終的な配列のサイズを常に知っているので、事前に作成して積み重ねられた値を追加することができます。ありがとう! – offeltoffel

関連する問題