当我使用numpy.shape()
检查数组的形状时,我有时会得到(length,1)
,有时会得到(length,)
。它看起来像是一个列与行向量......不过,它似乎并没有改变任何有关数组本身[除了一些函数抱怨,当我通过形状(length,1)
]数组。一维阵列形状(长度,)与(长度,1)与(长度)
这两者有什么区别?
为什么形状不正好,(length)
?
当我使用numpy.shape()
检查数组的形状时,我有时会得到(length,1)
,有时会得到(length,)
。它看起来像是一个列与行向量......不过,它似乎并没有改变任何有关数组本身[除了一些函数抱怨,当我通过形状(length,1)
]数组。一维阵列形状(长度,)与(长度,1)与(长度)
这两者有什么区别?
为什么形状不正好,(length)
?
的要点是,说的载体可以看出无论是作为
你可使用np.squeeze
添加使用[:, np.newaxis]
语法或尺寸下降尺寸:
>>> xs = np.array([1, 2, 3, 4, 5])
>>> xs.shape
(5,)
>>> xs[:, np.newaxis].shape # a matrix with only one column
(5, 1)
>>> xs[np.newaxis, :].shape # a matrix with only one row
(1, 5)
>>> xs[:, np.newaxis, np.newaxis].shape # a 3 dimensional array
(5, 1, 1)
>>> np.squeeze(xs[:, np.newaxis, np.newaxis]).shape
(5,)
(长度)数组是一个数组,其中每个元素是一个数字,并且数组中有长度元素。 (length,1)数组是一个也有长度元素的数组,但每个元素本身都是一个具有单个元素的数组。例如,以下使用长度= 3。
>>> import numpy as np
>>> a = np.array([[1],[2],[3]])
>>> a.shape
>>> (3, 1)
>>> b = np.array([1,2,3])
>>> b.shape
>>> (3,)
它是明确的'列',而不是一排? (也就是说它可以被看作'有一行的矩阵'吗?) – DilithiumMatrix
@zhermes'xs [:,np.newaxis]'是一列矩阵,'xs [np.newaxis,:]'是一行矩阵 –