当前位置 : 主页 > 编程语言 > python >

python – 删除零线2-D numpy数组

来源:互联网 收集:自由互联 发布时间:2021-06-25
我在numpy中运行qr分解,它返回一个ndarrays列表,即Qand R: [q,r] = np.linalg.qr(np.array([1,0,0,0,1,1,1,1,1]).reshape(3,3)) R是一个二维数组,底部有零线(甚至在我的测试集中的所有例子都证明了这一点):
我在numpy中运行qr分解,它返回一个ndarrays列表,即Qand 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.all与axis参数一起使用:

>>> r[np.all(r == 0, axis=1)]
array([[ 0.,  0.,  0.]])
>>> r[~np.all(r == 0, axis=1)]
array([[-1.41421356, -0.70710678, -0.70710678],
       [ 0.        , -1.22474487, -1.22474487]])
网友评论