考虑
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
在Python看来,x
的形状为(4,3),而v
的形状为(3,)。 Python为什么不将v
视为具有形状(,3)。此外,为什么v
和v.T
具有相同的形状(3,)。恕我直言,我认为如果v
具有形状(3,),那么v.T
应该具有形状(,3)?
答案 0 :(得分:1)
(3,)
并不意味着3
是第一个。它只是Python编写1元素元组的方式。如果形状是列表,则为[3]
。
(, 3)
是无效的Python。 1元素元组的语法为(element,)
。
之所以不能只是(3)
是因为Python只是将括号视为分组构造,这意味着(3)
被解释为3
,一个整数。
答案 1 :(得分:1)
您知道,numpy数组是n维的。形状按顺序显示尺寸。如果是一维,则只能看到第一个尺寸,而二维只能看到2个尺寸,依此类推。
这里x是2维数组,而v是1维数组(又称矢量)。这就是为什么当对v进行整形时会看到(3,)表示它只有一个尺寸而x.shape给定(4,3)的原因。转置v时,那也是一维数组。为了更好地理解这一点,请尝试另一个示例。创建一个3-D数组。
z=np.ones((5,6,7))
z.shape
print (z)