我在numpy
中运行qr factorization
,它返回ndarrays
的列表,即Q
和R
:
>>> [q,r] = np.linalg.qr(np.array([1,0,0,0,1,1,1,1,1]).reshape(3,3))
R
是一个二维数组,在底部有一个旋转的零行(甚至在我的测试集中的所有示例中都得到了证明):
>>> print r
[[ 1.41421356 0.70710678 0.70710678]
[ 0. 1.22474487 1.22474487]
[ 0. 0. 0. ]]
是的。现在,我想把R
分成两个矩阵R_~
:
[[ 1.41421356 0.70710678 0.70710678]
[ 0. 1.22474487 1.22474487]]
以及R_0
:
[[ 0. 0. 0. ]]
(提取所有零线)。它似乎接近这个解决方案:deleting rows in numpy array。
编辑:
更有趣的是:np.linalg.qr()
返回一个n x n
矩阵。不是,我想的是:
A := n x m
Q := n x m
R := n x m
如果要删除具有可忽略项的行,我将使用
np.allclose
。由于数据不完全等于零,我们需要为零设置一个阈值,例如1e-6,使用numpy.all和axis=1来检查行是否为零。使用numpy.where和numpy.diff获取拆分位置,并调用numpy.split将数组拆分为数组列表。
将
np.all
与axis
参数一起使用:相关问题 更多 >
编程相关推荐