加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 10:31:39 所属栏目:Python 来源:网络整理
导读:我在numpy中运行qr分解,它返回一个ndarrays列表,即Qand R: [q,r] = np.linalg.qr(np.array([1,1,1]).reshape(3,3)) R是一个二维数组,底部有零线(甚至在我的测试集中的所有例子都证明了这一点): print r[[ 1.41421356 0.70710678 0.70710678] [ 0. 1.224744
我在numpy中运行qr分解,它返回一个ndarrays列表,即Qand R:

>>> [q,r] = np.linalg.qr(np.array([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]])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读