我有一个名为class1
维度为50x4
的numpy数组。
我找到class1
每列的平均值。 mean1 = np.mean(class1, axis=0)
np.mean
返回mean1 = [ 5.006 3.428 1.462 0.246]
当我尝试mean1.T
时,它仍会返回[ 5.006 3.428 1.462 0.246]
进行转置的正确方法是什么?
基本上我想做mean1.T * mean1
,以便获得4x4
矩阵
答案 0 :(得分:5)
对于许多情况,可能最简单和最健壮的方法是使用np.outer
:
>>> mean1 = np.array([ 5.006, 3.428, 1.462, 0.246])
>>> np.outer(mean1, mean1)
array([[ 25.060036, 17.160568, 7.318772, 1.231476],
[ 17.160568, 11.751184, 5.011736, 0.843288],
[ 7.318772, 5.011736, 2.137444, 0.359652],
[ 1.231476, 0.843288, 0.359652, 0.060516]])
由于mean1
是一维数组transpose
没有任何作用,因为没有任何内容可以转置。这是一个善意的numpy功能,有时会让人措手不及。
答案 1 :(得分:1)
怎么样
>>> mean1 = mean1[np.newaxis]
>>> mean1 * mean1.T