2D配列を読み込んで出力する関数があります。0 に等しい入力のすべてのインデックスに対して、出力を一定 (この場合は pi) にしたいのですが、それ以外の場合は、それにいくつかの計算を実行します。例えば:
import numpy as np
import numpy.ma as ma
def my_func(x):
mask = ma.where(x==0,x)
# make an array of pi's the same size and shape as the input
y = np.pi * np.ones(x)
# psuedo-code bit I can't figure out
y.not_masked = y**2
return y
my_array = [[0,1,2],[1,0,2],[1,2,0]]
result_array = my_func(my_array)
これにより、次のようになります。
result_array = [[3.14, 1, 4],[1, 3.14, 4], [1, 4, 3.14]]
y**2
つまり、ゼロに等しくない 2D リストの各要素に適用され、すべてのゼロが pi に置き換えられました。
私の関数には除算が含まれており、事前にインデックスがわからないため、これが必要です。教科書の matlab チュートリアルを Python に変換しようとしていますが、この機能に困惑しています!
ありがとう