需要明确的是,我们谈论的是:
NumPy数组,也称为NumPy .ndarray
数组的形状,由numpy.ndarray.shape所知
这个问题假设了一些未知的numpy。形状为(R,)的ndarray,其中R应该理解为其各自维度的长度
NumPy数组有一个形状。这个.shape由一个元组表示,其中元组中的每个元素都告诉我们该维度的长度。为了保持简单,让我们坚持行和列。而numpy的值。Ndarray在下面的例子中不会改变,但形状会。
让我们考虑一个值为1、2、3和4的数组。
我们的例子将包括以下.shape表示:
(4,) # 1-dimensional array with length 4
(1,4) # 2-dimensional array with row length 1, column length 4
(4,1) # 2-dimensional array with row length 4, column length 1
我们可以更抽象地考虑变量a和b。
(a,) # 1-dimensional array with length a
(b,a) # 2-dimensional array with row length b, column length a
(a,b) # 2-dimensional array with row length a, column length b
对我来说,“手动”构建它们有助于更好地理解它们的维度含义。
>> # (4,)
>> one_dimensional_vector = np.array(
[1, 2, 3, 4]
)
>> # (1,4)
>> row_vector = np.array(
[
[1, 2, 3, 4]
]
)
>> # (4,1)
>> column_vector = np.array(
[
[1],
[2],
[3],
[4]
]
)
第一个问题的答案是
形状(R, 1)和形状(R,)的区别是什么?
答:它们有不同的维度。A是一个维度的长度,b是另一个维度的长度,.shape分别是(A, b)和(A,)。B恰好是1。一种考虑方法是,如果a = 1,那么行长度为1,因此它是行向量。如果b = 1,则该列的长度为1,因此numpy。它表示的Ndarray是一个列向量。
对于上面的例子有没有更好的方法?
回答:让我们假设我们有上面示例中使用的数组,其中1、2、3和4为值。使(R,)为(R, 1)的简便方法是:
>> one_dimensional_array = np.array([1,2,3,4])
>> one_dimensional_array.shape
(4,)
>> row_vector = one_dimensional_array[:, None]
>> row_vector.shape
(4, 1)
资源
NumPy - ndarrays - https://numpy.org/doc/stable/reference/arrays.ndarray.html
交叉验证@unutbu -维戏法- https://stats.stackexchange.com/a/285005