NumPy 1.11.1と1.13.1で異なるストーリーを返す関数ascontiguousarray()に問題があります。関数ascontiguousarrayは、NumPy 1.11.1と1.13.1で異なるストライドを返します。
(Ubuntuの16.04、Pythonの2.7.12)を再現するコード:numpyの1.11.1で
import os
import numpy as np
x = np.array([[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16]],dtype='uint32')
x = x.T
x = np.ascontiguousarray(x)
print(x.strides)
それは進歩を返します(64、4)(私の意見で正しい前進)
でNumPy 1.13.1ストライドが返されます:(4、4)(予期しない進歩)
説明や解説ですべての助けをいただきありがとうございます。
さて私は、X 'はどこメモリの図である 'だと思います元の配列を初期化しました。それはそれと関係があります。正しいストライドは何ですか?また、バージョン間の相違点は何ですか? - 本当にわからない。 – Divakar
興味深い。この場合、 'y = x.T;を実行すると、 z = np.ascontiguousarray(y) 'をチェックし、' z is y'をチェックすると、結果は 'True'です:それらはまったく同じオブジェクトです(同じデータのビューだけではありません)。 'x'のストライドは(4、4)であり、' x'の転置はストライドを反転させるだけなので、 'y'は' x'と同じ進歩をします。 1.6.2では、 'y.flags'は' C_CONTIGUOUS'の 'False'を示しますが、1.13.1では' y.flags'は 'C_CONTIGUOUS'が' True'であることを示しています。 *それはここで重要な根本的な変化のようです。あなたの質問に答えるために、なぜそれが変わったのかを知る必要があります。 –