在带有字符串和数字的二维数组中查找最小数

2024-05-08 20:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python查找分配给二维数组中字符串的最小值。我在尝试构建阵列时遇到了一些问题,因此我当前的解决方案如下所示:

from random import randint
import numpy as np

array=['abc', 'def', 'ghi']
col = 2
row = len(array)
new_array= [[0] * col for _ in range(row)]
i = 0
j = 0
for i in range(0, row):
    for j in range(0, col):
        new_value = randint(0, 9)
        new_array[i][j] = array[i]
        new_array[i][1] = new_value
print(array)
print(new_array)

array[]看起来像这样:['abc', 'def', 'ghi']

new_array[][]在循环结束时是这样的:
[['abc',1], ['def',2], ['ghi',3]]

我需要知道的是数字较小的字符串。 我试过导入import numpy as np并使用print(new_array.min())

我已经更新了我的代码。现在,不再使用随机生成器: 我用的是一个函数来计算Levenshtein距离。你知道吗

while j < len(T) 
    new_array= [[s, levenshtein_distance(T[j], input)] for s in T]
    if np.argmin(np.asarray(disT)[:,1]) > 
        levenshtein_distance(T[j], input):
        print('Minimum was already found in', new_array)

但是数组得到的距离值是相同的(我认为是如何赋值的):

[['abc', 2], ['def', 2], ['ghi', 2], ['jkl', 2], ['mno', 2], ['pqr', 2], ['stu', 2]

Tags: 字符串inimportnewfordefnprange
1条回答
网友
1楼 · 发布于 2024-05-08 20:35:41

您的new_array可以使用列表理解的一行代码生成:

new_array = [ [ s, randint(0, 9) ] for s in array ]

正确的函数不是np.min返回列表的最小值,而是np.argmin返回其索引(即位置):

idx = np.argmin(np.asarray(new_array)[:,1])

知道最小值的位置后,可以检索关联的字符串:

print(new_array[idx][0])

相关问题 更多 >