如何使用Python删除2-D numpy数组中的零线元素?
- 内容介绍
- 文章标签
- 相关推荐
本文共计310个文字,预计阅读时间需要2分钟。
我在numpy中执行QR分解,返回一个包含Q和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]])
本文共计310个文字,预计阅读时间需要2分钟。
我在numpy中执行QR分解,返回一个包含Q和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]])

