Numpy 重塑行为异常
Numpy reshape behaves unexpectedly
我在正在运行的程序中间有一个 numpy 矩阵(假设它的名称是 rdy
)。我发现将它重塑为一维矩阵可以得到一个二维矩阵。但是如果我在交互式 shell 中尝试同样的事情,我会得到预期的结果。像下面的 ipython 日志。我想知道矩阵 rdy 的哪个方面导致它在重塑时表现不同?
# This is expected:
In [191]: np.random.rand(512, 1).reshape(-1).shape
Out[191]: (512,)
# This is unexpected:
In [192]: rdy.reshape(-1).shape
Out[192]: (1, 512)
# The following are the different aspects of the rdy matrix:
In [193]: rdy.shape
Out[193]: (512, 1)
In [194]: rdy.flags
Out[194]:
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
In [195]: rdy.data
Out[195]: <read-write buffer for 0xeae6488, size 4096, offset 0 at 0x2ff95e70>
np.matrix
的关键定义属性之一是它将通过常见的转换保持为二维对象。 (毕竟,这几乎就是矩阵的定义。)
np.random.rand
returns一个np.ndarray
,不共享这个属性。 (我喜欢将 ndarray 视为与 C 数组非常相似,因为你可以随心所欲地更改 'dimensions',只要你仍在查看相同的内存区域,而不是越界界,一切都会好的。)
如果您希望矩阵表现为数组,您可以convert it to one。
我在正在运行的程序中间有一个 numpy 矩阵(假设它的名称是 rdy
)。我发现将它重塑为一维矩阵可以得到一个二维矩阵。但是如果我在交互式 shell 中尝试同样的事情,我会得到预期的结果。像下面的 ipython 日志。我想知道矩阵 rdy 的哪个方面导致它在重塑时表现不同?
# This is expected:
In [191]: np.random.rand(512, 1).reshape(-1).shape
Out[191]: (512,)
# This is unexpected:
In [192]: rdy.reshape(-1).shape
Out[192]: (1, 512)
# The following are the different aspects of the rdy matrix:
In [193]: rdy.shape
Out[193]: (512, 1)
In [194]: rdy.flags
Out[194]:
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
In [195]: rdy.data
Out[195]: <read-write buffer for 0xeae6488, size 4096, offset 0 at 0x2ff95e70>
np.matrix
的关键定义属性之一是它将通过常见的转换保持为二维对象。 (毕竟,这几乎就是矩阵的定义。)
np.random.rand
returns一个np.ndarray
,不共享这个属性。 (我喜欢将 ndarray 视为与 C 数组非常相似,因为你可以随心所欲地更改 'dimensions',只要你仍在查看相同的内存区域,而不是越界界,一切都会好的。)
如果您希望矩阵表现为数组,您可以convert it to one。