python - 从二维数组python中删除行(IndexError)
问题描述
我有一个二维数组
data = [[1,2,3...], [4,5,6...], [7,8,9...], ...]
和另一个一维数组,其中包含上面每个子数组的最小值:
minima= [1, 4, 7, ....]
. 于是乎len(minima) = len(data)
。
现在我想设置一个阈值,比如说threshold = 7
并想删除data
最小值低于这个阈值的每个子数组。所以我尝试了以下方法:
threshold = 7
for i in range(len(minima)):
if minima[i] < threshold:
data = np.delete(data, i, 1)
但这给了我一个 IndexError: IndexError: index 225 is out of bounds for axis 1 with size 225
我想这与轴有关,循环不是最好的方法,但我的专业知识非常有限。感谢你的帮助!
解决方案
这将失败的原因是因为如果您删除一行,那么行数会减少,但i
会继续增加,直到“旧”行数。
但无论如何,使用循环每次删除一行并不是很有效。Numpy 可以通过批量操作来提高效率。通过迭代,您的算法可能不会比不使用 numpy 的简单 Python 程序快多少。
您可以使用以下方法过滤数组:
data2 = data[minima >= threshold]
请注意,您不需要自己计算逐行最小值,您可以使用以下方法计算:
data2 = data[data.min(axis=1) >= threshold]
推荐阅读
- python - 无法使用python写入csv文件
- webview - iOS 9 不支持 WKWebview 快照配置
- postgresql - 如果使用`set local`,将postgres函数标记为并行安全是否安全
- c++ - 如何在 TM1637 4 位七段显示器上显示用户输入值?
- sql-server - SQL Server 代理新作业依赖于现有作业的现有步骤
- nginx - 如何访问 url 的静态文件
- jquery - 单击按钮后的Jquery Foreach
- image-processing - 如何使用 OpenCV 为圆形网格中的每个圆圈计算下图中的孤立白点?
- javascript - 如何使用/导入要在我的 HTML 文件(不是 JSP)中使用的 Java 语言环境类和资源包属性?
- python - 在热图中显示不必要的空间