为什么在使用alpha时不能得到转置,但是对于beta却可以得到?额外的[]有什么作用?
alpha = np.array([1,2,3,4])
alpha.shape
alpha.T.shape
beta = np.array([[1,2,3,4]])
beta.shape
beta.T.shape
答案 0 :(得分:3)
答案 1 :(得分:2)
第二对括号表示它是一个2D数组,因此,使用and数组时,转置数组与第一个数组不同(因为转置会切换2维)。但是,如果数组只有一维,则转置不会改变任何内容,并且所得数组等于起始数组。
答案 2 :(得分:1)
alpha
是一维数组,转置本身。
beta
是2D数组,因此您可以将(1,n)
转换为(n,1)
。
要对alpha
执行相同操作,您需要添加尺寸,而无需转置尺寸:
alpha[:, None]
答案 3 :(得分:1)
del g
是形状为(4,)的一维数组。转置只是alpha
,即alpha
。
alpha == alpha.T
是形状为(1,4)的2D数组。它是单行,但是具有两个维度。它的转置看起来像是形状为(4,1)的单列。
答案 4 :(得分:1)
当我来到编程语言领域时,来自“业务的一面”对我来说也很奇怪。经过深思熟虑,我意识到从编程角度来看,它们是不同的。看下面的列表:
a = [1,2,3,4,5]
这是一维结构。之所以这样,是因为要取回值1,2,3,4和5,您只需要分配一个地址值即可。例如,如果发出命令a [2],将返回3。
现在看看这个列表:
b = [[ 1, 2, 3, 4, 5],
[11, 22, 33, 44, 55]]
例如,要取回11,您将需要两个位置编号,因为1在第二个列表中,所以返回1;而在第二个列表中,它在第一个位置,返回0。换句话说,b [1,0]会给您11。
现在是技巧部分。看一下这第三张清单:
c = [ [ 100, 200, 300, 400, 500] ]
如果仔细看,每个数字都需要从列表中取回2个位置数字。例如300需要0,因为它位于第一个(也是唯一的)列表中,而2是因为它是第一个列表的第三个元素。 c [0,2]让您重回300。
此列表可以转置,因为它具有两个维度,并且转置操作可以切换位置参数。因此c.T会给您返回形状为[5,1]的列表,因为c的形状为[1,5]。
返回列表a。那里只有一个位置编号的清单。该列表仅具有[5]的形状,因此移调操作没有第二个位置自变量可以使用。因此,它仍然是[5],如果您尝试a.T,您将获得a。
知道了吗?
最诚挚的问候,
古斯塔沃