python - 从 numpy ndarray 中删除零行
问题描述
给定 mxn nd 浮点数组,获得不包含全零行的 m'xn nd 浮点数组的最佳方法是什么?
例如:给定
[
[1.0, 0.0, 2.0],
[0.0, 0.0, 0.0],
[2.0, 1.0, 0.0]
]
我想得到
[
[1.0, 0.0, 2.0],
[2.0, 1.0, 0.0]
]
解决方案
您可以按如下方式排除这些元素:
>>> import numpy as np
>>> x = np.array([ [1.0, 0.0, 2.0], [0.0, 0.0, 0.0], [2.0, 1.0, 0.0] ])
>>> x
array([[1., 0., 2.],
[0., 0., 0.],
[2., 1., 0.]])
>>> sumrow = np.abs(x).sum(-1)
>>> x[sumrow>0]
array([[1., 0., 2.],
[2., 1., 0.]])
注意:@Akavall 正确指出这np.abs()
将防止出现负值问题。
此外,另一种更复杂的方法:
>>> x = np.array([ [1.0, 0.0, 2.0], [0.0, 0.0, 0.0], [2.0, 1.0, 0.0] ])
>>> x[~np.all(x == 0, axis=1)]
array([[1., 0., 2.],
[2., 1., 0.]])
推荐阅读
- c# - 为 DataContractJsonSerializer 设置额外的调用者定义的上下文
- c# - 如何在 C# 中实现列表的延迟洗牌?
- azure-devops - 在 Azure 数据工厂中的查找活动中更新
- r - 数据清理 Bloomberg 到 R
- c++ - C++0x 中的类型别名有什么替代方法吗?
- python-3.x - Pandas 数据帧上的 numpy 广播会产生内存错误
- javascript - 按包含在另一个对象中的键和值过滤对象数组
- android - 材料日历视图不更新语言
- nginx - 将来自 cloudrun 服务的请求镜像到其他 cloudrun 服务
- reactjs - 如何根据 SignalR 更新数据库?