2D配列のリストを3D配列にキャストしようとしていますが、データがコピーされているかどうかを知りたいと思います。このプログラムで例えば 2D numpy配列のリストを3D配列にキャストするときのメモリコピー
、:images = []
for i in range(10):
images.append(numpy.random.rand(100, 100))
volume = numpy.array(images)
はimages[n]
と同じメモリブロックを参照しているvolume[n]
かどうかを確認する方法はありますか?
データを3D配列にする必要があります。画像のリストを入力として受け入れるべきか、データがコピーされるかどうかを評価しようとしています。私は非常に大きなデータセットを扱っているので、データコピーは受け入れられません。
ありがとうございました。これは、numpy配列が必然的にメモリ連続でなければならない場合や、トップレベルのインデックスが互いに連続していないサブ配列を参照できる場合、私が本当に求めていたことです。 – PiRK
あなたの質問について:私はジェネリックウィジェットを使って複数の画像をブラウズしています。画像はユーザーによって提供されなければならないので、入力データの仕様について厳密にする必要があるのか、ユーザーの生活をより簡単にするのかについて少し不明です。私は、一部のユーザーが2D配列のリストとしてデータをロードできるように要求するか、または悪いことにリストのリストのリストをロードできるようにすることを心配しています。私のウィジェットが最初にソートするのに高価だったデータをすべて並べ替えるのに時間がかかると、同じユーザーが文句を言うでしょう。 – PiRK
私のウィジェットは、3つの可能な方向のどれかに直角にボリュームをスライスするために、データを転置することができる必要があります。そのため、ビューを使用するためには、データを細かい配列にする必要があります。 また、多次元リスト(「https://github.com/PiRK/silx/blob/ImageStack/silx/utils/array_like.py#L211」)よりも「転置」しやすいh5pyデータセットを受け入れる予定です。 私はユーザーがシンクロトロン/ X線イメージング技術に取り組んでいる科学者であるため、数ギガバイト(おそらく数百ギガバイト)のデータサイズが必要です。 – PiRK