2016-12-01 10 views
0

Pythonで同じ長さの複数の1D配列に対してNumpy関数の同じシーケンスを実行するにはどうすればよいですか?例えば複数の1D配列のNumpy関数と同じシーケンス

import numpy as np 
subtotal1 = np.array([4, 7, 1, 3, 9]) 
subtotal2 = np.array([5, 3, 6, 5, 2]) 
...etc. 
total = np.array([9, 10, 7, 8, 11]) 

subtotal1 = np.divide(subtotal1, total) 
subtotal1 = np.round(subtotal1 * 100, 1) 
subtotal2 = np.divide(subtotal2, total) 
subtotal2 = np.round(subtotal2 * 100, 1) 
...etc. 

私は新しいPythonプログラマだ、と私はデータを分析し、視覚化を作成するためにnumpyのを学んでいます。 StackOverflowとNumpyのドキュメントを何日も検索しました。

ありがとうございました!

+0

これらの操作(ops)で関数を定義し、スタック型2D配列で 'np.apply_along_axis'を使用しますか?そのメソッドのユースケースを検索することが役に立ちます。オプションによっては、その軸に沿ってベクトル化することさえできるかもしれません。なぜなら、パフォーマンスを気にするなら、 'np.apply_along_axis'は実際にベクトル化された実装ではないからです。 – Divakar

答えて

1

は、あなたが何を意味するのか、このです:あなたは浮動小数点数としてsubtotal1と2を設定しない場合

import numpy as np 
subtotal1 = np.array([4, 7, 1, 3, 9],float) 
subtotal2 = np.array([5, 3, 6, 5, 2],float) 
total = subtotal1+subtotal2 

for subtotal in (subtotal1, subtotal2): 
    subtotal = np.divide(subtotal, total) 
    subtotal = np.round(subtotal * 100, 1) 
    print subtotal 

重要、除算はあなたにゼロ(整数除算)を得るために起こっている、それはあなたが望むものではありません。

あなたはあなたが行くように、あなたがリストにそれらを追加することができますと仮定し、これらの小計を作成する方法を述べるないので、コードを簡単に一般化される:

//Create subtotals before 
total = sum(subtotals) 
for subtotal in subtotals 
    subtotal = np.divide(subtotal, total) 
    subtotal = np.round(subtotal * 100, 1) 
    print subtotal 

は、あなたの質問は本当に程度numpyarraysはないことに注意してください。また、sumnumpyの合計ではありませんのでご注意ください。ジャンプする前に、いくつかの通常のPythonチュートリアルを読んでください。

0

すべてのsubtotalアレイを2Dアレイに参加させて、アレイ全体で2つの操作を行うことができます。これにより、2つのアレイ間で行単位の操作が行われます。そのためには、2つの配列の形状が2番目(列)の軸に沿って等しいことが必要です。

import numpy as np 

subtotal = np.arange(20,dtype=float).reshape((5,4)) 
total = np.array([8.2,3.4,6.0,1.3]) 
print subtotal 

[[ 0. 1. 2. 3.] 
[ 4. 5. 6. 7.] 
[ 8. 9. 10. 11.] 
[ 12. 13. 14. 15.] 
[ 16. 17. 18. 19.]] 

np.round(subtotal/total*100,1) 

array([[ 0. , 29.4, 33.3, 230.8], 
     [ 48.8, 147.1, 100. , 538.5], 
     [ 97.6, 264.7, 166.7, 846.2], 
     [ 146.3, 382.4, 233.3, 1153.8], 
     [ 195.1, 500. , 300. , 1461.5]]) 
関連する問題