python-3.x - 逐列搜索数组中的元素并返回不包含该元素的列的索引
问题描述
我有一个大小为 76 x 273 的二维数组。
我想在所有 273 列中搜索“0”并返回不包含“0”的列的索引。在 python 中最快的方法是什么?
预先感谢
解决方案
没有比检查所有单元格更快的方法了。如果您的列是第一个索引(即这会为您提供一列:),array[0]
那么您可以使用all
,它检查迭代中的所有值是否都是True
. True
因为在 Python 中,除了 0和 0之外的所有整数在转换为时都算作False
a boolean
,所以这是可行的,但它仍然不是更快,因为它仍然需要检查每个单元格。
与all
:
for i in range(len(array)): # or use 273 instead of len(array)
if not all(array[i]):
print(i, "contains 0")
如果您的第一个索引是行:
for i in range(273): # or use len(array[0])
for j in range(len(array)): # or use 76
if array[j][i] == 0:
print(i, "contains 0")
请注意,第二种方法的缓存效率较低,但如果您的数据结构如下,则没有更好的方法。
如果要返回包含零的列而不是打印它们,可以将其存储到列表中,例如:
def zero_cols(array):
output = []
for i in range(273):
for j in range(len(array)):
if array[j][i] == 0:
output.append(i)
return output
推荐阅读
- c# - 如何在 C# 中找到大多数列表中的常见项目[如果不能,则不是全部]
- r - 以公共 id 为条件的组合边列表
- python - 通过添加数组的元素得到一个数字
- javascript - 向现有 JSON 对象添加新元素
- node.js - /usr/bin/env: 'node': 运行 vscode 任务时没有这样的文件或目录
- github - 本地构建 VuePress 站点并将其推送到 Github Pages
- ios - Google Maps iOS 使用平移或触摸手势绘制圆圈并在绘制的圆圈内显示标记
- angular - 错误 RangeError:超出最大调用堆栈大小(Angular 6)
- python - 线性回归后从突发数据中减去线性斜率
- iframe - 使用本地文件将 iframe 内容添加到父文档