如何在python中计算x*x.T
我想计算如下: 但我不知道如何在python中实现这一点,我不想手动实现这一点,而是为此使用预定义的函数,例如来自numpy的函数 但是如何在python中计算x*x.T,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,我想计算如下: 但我不知道如何在python中实现这一点,我不想手动实现这一点,而是为此使用预定义的函数,例如来自numpy的函数 但是numpy似乎忽略了x.T应该被转置 代码: 将numpy导入为np x=np.数组([1,5]) print(np.dot(x,x.T))#=26,这不是它应该是的矩阵! 您可以执行以下操作: x = np.array([[1], [5]]) print(np.dot(x, x.T)) 您的原始x的形状为(2,),而您需要的形状为(2,1)。另一种方法是
numpy
似乎忽略了x.T应该被转置
代码:
将numpy导入为np
x=np.数组([1,5])
print(np.dot(x,x.T))#=26,这不是它应该是的矩阵!
您可以执行以下操作:
x = np.array([[1], [5]])
print(np.dot(x, x.T))
您的原始x
的形状为(2,),而您需要的形状为(2,1)。另一种方法是重塑您的x
:
x = np.array([1, 5]).reshape(-1,1)
print(np.dot(x, x.T))
重塑(-1,1)
重塑数组的形状,使其具有1列,并隐式地考虑行数
输出:
[[ 1 5]
[ 5 25]]
当向量定义为一维数组时,可以使用
np.outer
:
np.outer(x, x.T)
> array([[ 1, 5],
> [ 5, 25]])
或者,也可以将向量定义为矩阵并使用正规矩阵乘法:
x = np.array([[1], [5]])
x @ x.T
> array([[ 1, 5],
> [ 5, 25]])
我应该补充一点,我想对任意维数的x进行此操作,如何以这种方式重塑数组`np.重塑(x,len(x))只会把x还给我。@OnkelZukunft添加了重塑。请找到编辑。谢谢。如果你解释一下你提供的代码是如何回答这个问题的,这将是一个更好的答案。这是内部的,点,产品(顾名思义)!你读过
np.dot
文档了吗?
np.matmul(x[:, np.newaxis], [x])