python np.dot外积有效,但内积返回nan,太奇怪了
Posted
技术标签:
【中文标题】python np.dot外积有效,但内积返回nan,太奇怪了【英文标题】:python np.dot outer product works but inner product returns nan, so weird 【发布时间】:2018-01-20 14:35:11 【问题描述】:jupyter notebook partial output, please check it out
我尝试了很多方法来更改数据类型,但仍然无法正常工作。这是 numpy 的错误吗?
【问题讨论】:
可能是两者之一,但仅凭一张照片无法说明任何事情。 请edit您的帖子并将实际代码/输入/输出显示为文本而不是屏幕截图。其他人无法从您的图像中复制和粘贴。 See here 了解详情。谢谢。 【参考方案1】:一种可能性是您的数组(来自 pandas)有一个 nan
或其他在乘法中产生 nan 的值。第一个结果中可能有一个nan
,但它只是不显示,因为它被省略号隐藏了。
举个小例子:
In [550]: x = np.array([[1,2, np.nan,4,5]],dtype=object)
In [551]: np.dot(x.T,x) # (n,1)*(1,n)=>(n,n)
Out[551]:
array([[1, 2, nan, 4, 5],
[2, 4, nan, 8, 10],
[nan, nan, nan, nan, nan],
[4, 8, nan, 16, 20],
[5, 10, nan, 20, 25]], dtype=object)
In [552]: np.dot(x,x.T) # (1,n)*(n*1)=>(1,1)
Out[552]: array([[nan]], dtype=object)
pandas 数据框通常使用 object dtype,并使用 nan
表示未知或不完整的数据。
【讨论】:
以上是关于python np.dot外积有效,但内积返回nan,太奇怪了的主要内容,如果未能解决你的问题,请参考以下文章
为什么两个numpy (n,)向量的矩阵@乘积是点积,而不是外积?