【发布时间】:2019-02-20 19:26:21
【问题描述】:
我有一个包含行和列的庞大数组。有些行比其他行大。我需要获取最大长度行,即长度最长的行。我为此编写了一个简单的函数,但我希望它尽可能快,就像 numpy fast 一样。目前,它看起来像这样:
示例数组:
values = [
[1,2,3],
[4,5,6,7,8,9],
[10,11,12,13]
]
def values_max_width(values):
max_width = 1
for row in values:
if len(row) > max_width:
max_width = len(row)
return max_width
有没有办法用 numpy 来完成这个?
【问题讨论】:
-
如果你只想要最大长度,你总是可以在纯 python 中做
max(map(len, values))。如果您想要与最大长度对应的行,请使用values[np.fromiter(map(len, values), int).argmax()] -
您的行长度不同,因此您无法将完整数组放入 numpy,因为它不支持锯齿状数组。您将无法仅使用 numpy 来实现这一点。您将不得不在工作流程的至少一部分中使用 python 内置函数,老实说,还不如留在那里。
-
谢谢,姆斯坦诺。在我做的测试中,比较了我所有的方法,你的是最快的。