2016-04-18 14 views
0

私は以下の問題を抱えており、解決策を見つけることはできません。関数に多次元配列パラメーターのインデックスを使用する

for index, value in numpy.ndenumerate(re): 
     re[index] += rec[(index)] 

これは残念なことには機能しません。関数は次のようになります。

def rec(x1, x2, x3, y1, y2, y3, z1, z2, z3): 

インデックスのサイズは、関数のパラメータの数に適合します。できるだけgenerellとして保存したいので、

for [x1][x2][x3][y1][y2][y3][z1][z2][z3], value in numpy.ndenumerate(re): 
     re[index] += rec[(index)] 

私を助けません。あなたは何か考えていますか?

+0

問題の説明はありません、それは「これが動作しない」いくつかのコードだ、とではありません説明。 [mcve]を構築する方法をお読みください。 – DSM

+0

多次元のnumpy.arrayのインデックス値を関数のパラメータとして使用したいだけです。 – HighwayJohn

+0

それには 'np.meshgrid'を使います。 'x = np.arange(0,1,0.01)'などの各次元のベクトルを構築すると、 'np.meshgrid'はn次元のグリッドを生成し、' ufunc'を入力として使用できます。 – roadrunner66

答えて

0

This doesn't work unfortunatelyはあなたの問題を記述するための正しい方法ではありません。あなたが得るエラーの何かを教えてください。

しかし、私はそれがrecとインデックスを付けられないか、または__getitem__メソッドを持っていると思います。

あなたは、引数のたくさんの機能を定義します。

def rec(x1, x2, x3, y1, y2, y3, z1, z2, z3): 
    .... 

あなたは、関数としてそれを呼び出す必要があります。リストや配列ではありません。

rec(1,2,3,....) # should work 

または

index = (1,2,3,...) 
rec(*index) 

もしそうなら、次のことがうまくいくかもしれない:

for index, value in numpy.ndenumerate(re): 
     re[index] += rec(*index) 
+0

ああ、実際に私が探していたソリューションでした! – HighwayJohn

0

A 2Dの例(Ipythonノート)

import numpy as np 
import matplotlib.pyplot as p # just for visualization 
%matplotlib inline 

x=np.arange(0,1,0.01) # <-- give ranges to your parameters 
y=np.arange(0,1,0.01) 
xv, yv = np.meshgrid(x,y) # <--- generate the n-dimensional indeces 

zv= np.sin(xv + 3* yv) # <-- this is the ufunc, look ma: no for loops 

p.imshow(zv,aspect ='1') 

enter image description here

+0

ありがとう:)助けられました – HighwayJohn

+0

明らかにそうではありません:) – roadrunner66

+0

申し訳ありませんが、他の解決策はちょうどもっと助けました:D – HighwayJohn