numpy.reshapeで特定のnumpy配列を平坦化すると、一見矛盾した結果に遭遇しました。時々私は配列を変形すると、1行の2D配列を返しますが、最初に配列をコピーしてから全く同じ操作を実行すると、1D配列が返されます。コピーしたアレイとコピーしていないアレイでナンシーの変形が異なる
これは主にnumpy配列をscipy配列と組み合わせたときに発生すると思われ、後で平坦化配列に行列を掛けたいときに配置問題が発生します。それは印刷し実行すると
import numpy as np
import scipy.sparse as sps
n = 10
A = np.random.randn(n,n)
I = sps.eye(n)
X = I+A
x1 = np.reshape(X, -1)
x2 = np.reshape(np.copy(X), -1)
print 'x1.shape=', x1.shape
print 'x2.shape=', x2.shape
:
は、たとえば、次のコードを考えてみ
x1.shape= (1, 100)
x2.shape= (100,)
同じことがnumpy.flattenで発生()。ここで何が起こっているのですか?この動作は意図的ですか?
これはあなたがしたように 'X'を構築するまでパズルだったので、結果を見ました。 'array'ではなく' matrix'として出力されます。あなたは 'print X'(' n = 3'のために)を含めるべきです。 – hpaulj