python - numpy 在计算向量和矩阵乘法时的奇怪行为
问题描述
我有以下奇怪的行为,numpy
其中 numpy 不能将(n,n)
矩阵与(n,)
矩阵相乘并将后者转换为(1,n)
矩阵。我尝试了不同的例子,效果很好。u
并s
从svd
函数中获得如下:
[u, s, vt] = np.linalg.svd(G)
svd_estimate = np.matmul(u * s, vt)
并且G
是一个numpy矩阵。我尝试过,squeeze(s)
但也没有用。我错过了什么?numpy 版本是'1.19.2'
解决方案
看看a vssvd
产生了什么:matrix
array
In [24]: np.linalg.svd(np.matrix(np.eye(3)))
Out[24]:
(matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]]),
array([1., 1., 1.]),
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]]))
In [25]: np.linalg.svd(np.eye(3))
Out[25]:
(array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]]),
array([1., 1., 1.]),
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]]))
使用数组值,如文档中所示:
In [27]: u,s,vh=_25
In [28]: np.dot(u*s,vh)
Out[28]:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
使用我们使用的矩阵结果np.multiply
In [37]: u,s,vh=_24
In [38]: np.multiply(u,s)
Out[38]:
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
In [39]: np.multiply(u,s)*vh
Out[39]:
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
推荐阅读
- java - 按J按钮画一个球,球是不可见的
- python - Python3 Raspberry Pi (ModuleNotFoundError: No module named 'RPi') with code and error and RPi.GPIO version
- github - GitHub Actions 对于 PRIVATE Repositories 是否安全且私密?
- servlets - Tomcat7 Maven 插件服务未找到
- javascript - 有没有办法将事件侦听器应用于整个元素类?
- apache-beam - 具有“local-timestamp-millis”反序列化问题的 Avro 联合字段
- linux - chmod/chown 即使不需要也总是写更新
- reactjs - React CRA - 特定页面的元标记(Spring Boot)
- c++ - 如何使用 mingw 编译和链接最小的 .NET C++ 程序
- python - 在 AWS Lambda 上部署应用程序时出现错误