我正在尝试使用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]
答案 0 :(得分:0)
您的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])