20

一時的な配列の作成を回避するために、操作しているのと同じ配列に値を割り当てることはpython numexprで安全ですか?

プロジェクトのホームページのメモリ使用量の説明からは問題ないように見えますが、ソースコードを詳しく調べなければ、それは確かな答えではありません。

私はうまくいく以下を試しましたが、このパッケージに精通している誰かからの確認を期待しています:

import numpy as np
import numexpr as ne
a = np.ones(5)
b = a.copy()
ne.evaluate("a+b",out=a)
array([ 2.,  2.,  2.,  2.,  2.])
4

1 に答える 1

8

numexprは、1024要素(VMLを使用している場合は4096)のチャンクサイズではありますが、内部で一時配列を使用しているため、機能します。これらの入力のチャンクはスライスと考えることができますが、評価中の速度とメモリのコンパクトさのために適切なCデータ型として格納されます。各チャンクの計算が実行された後、結果はoutパラメーターに格納されます。それ以外の場合は、入力と同じサイズの配列を割り当てる必要があります。

numexprがベクトル化された算術を評価する方法の擬似コードについては、「なぜそれが機能するのか」のセクションを確認してください。

于 2013-03-22T02:52:50.037 に答える