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,)向量的矩阵@乘积是点积,而不是外积?

python向量化与循环计算内积外积速度对比

[Python系列-15]:人工智能 - 数学基础 -5- 向量内积(点乘)和外积(叉乘)概念及几何意义

内积 外积

点积内积外积叉积张量积——概念区分

向量内积&外积