10

2 つの ndarray が同じ基になる ndarray の重複ビューであるかどうかを確認したいと思います。

2 つのスライスがまったく同じであることを確認するには、次のようにします。

a.base is b.base and a.shape == b.shape and a.data == b.data

バッファの比較は、1 つの単純なケースで機能しているように見えました。

残念ながら、これはスライスが重なっている場合には機能しません。バッファからそのオフセットが基になるデータにあるものを正確に抽出する方法がわかりません。おそらく誰かがこれを手伝ってくれますか?

また、abは のスライスでありx、 とcは のスライスですb。基になるデータは同じなので、 と の間の重複も検出したいと思いcますa。バッファと形状だけを比較するだけでうまくいくはずです...誰かが正確にその方法を教えてくれたら、私は感謝します.

4

2 に答える 2

11

numpy.may_share_memory()現時点で最高のヒューリスティックです。これは控えめにヒューリスティックです。誤検知が発生する可能性がありますが、誤検知は発生しません。ヒューリスティックを 100% 正しくなるように改善する方法があると思います。それらがパンアウトした場合、それらはその関数に折りたたまれるので、それが最善の方法です.

于 2012-05-25T10:17:09.393 に答える
1

ctypes配列のプロパティを使用して、インデックスがメモリ内のどこに存在するかを比較できる場合があります。多少の作業が必要になる場合があるため、一歩下がって、問題を解決する別の方法があるかどうかを確認することをお勧めします。

于 2012-05-25T06:48:01.140 に答える