値を定義する行と列の関数を指定して、numpyのndarrayを作成したいとします。numpy ndarrayを各行とカラムで呼び出される関数で効率的に埋めるにはどうしたらいいですか?
は例えば、私はこのような何かできるようにしたいと思います(完全に間違った構文を、あなたのアイデアを取得する必要があります):
>>> np.ndarray((2,3), lambda r,c: 3*r+c)
[[ 0 1 2]
[ 3 4 5]]
は、オンライン検索、私が持っていたのに、何も得られませんでしたトラブル...それを検索する方法を正確で今私が持っている
(相当)以下のコードを考えて、それは恐ろしく非効率的です。
残念ながらdef ndarrayFuncFill(size, func):
z = np.empty(size)
for r in np.arange(size[0]):
for c in np.arange(size[1]):
z[r][c] = func(r,c)
return z
>>> ndarrayFuncFill((2,3), lambda r,c: 3*r+c)
array([[ 0., 1., 2.],
[ 3., 4., 5.]])
、私が特に今のところこれを使用したい機能は、私がufuncまたはそれに類するものとして簡単に書き換えることができないものです。私はかなりそれをブラックボックスとして扱わなければならない。
私が実際にこれを使用することに関心がある機能(上記のラムダほどシンプルではない)は、投稿する許可がありません。ただし、ルックアップテーブルの補間は基本的に行います。だからあなたはそれを行と列にして、それをルックアップテーブルのインデックスに変換しますが、それはちょうど1対1のルックアップではなく、価値観、そしてそのようなもの。だから、最も効率的な機能ではありませんが、ネストされたfor-loopsのような無駄なソースをあまり多く持たないようにしたいと思います。
提案がありますか?
は、なぜあなたは私たちがそれ(または簡略化した例を見ることができる機能を追加しないでください)?また[mcve]を見てください。 – roadrunner66
残念ながら私は正確なコードを投稿する権限はありませんが、質問文に詳細情報を追加します。アドバイスありがとう! –
'lookup'で述べたように編集内容に基づいて、' np.searchsorted'を使うことができます。関連する使用例については、Stackoverflowで検索してください。http://stackoverflow.com/search?q=%5Bnumpy%5D+np.searchsorted – Divakar