Как напечатать определенный элемент 2d-массива через поиск подходящего значения - PullRequest
0 голосов
/ 12 декабря 2018

Скажем, у меня есть массив 2d:

a = np.array[ ("words",3) , ("blah",7) , ("hmm",1 ]      

, и у меня есть значение: 3.0

Как мне напечатать первый индекс в массиве 2d, основанный насовпадающее значение?

желаемый вывод: words

Вот мой код:

k = np.array([["words words ", 4], ["blah blah", 1], [" please help me", 9]])
a = []
for i in range(len(k)):
    holder = (int(k[i,1]))
    a = np.append(a, holder)
    print(k[i,1])
    print(a, 'a')

a = np.asarray(a)
print('')
print( a )
print('')

close = (np.abs(a - dot)).argmin()  # dot is the value 0, it is the value of previous dot product computation
print(close , "close")
c = close
print(a[c])

1 Ответ

0 голосов
/ 12 декабря 2018

Если вы заинтересованы только в печати строки в сочетании с определенным числом, я бы сделал что-то вроде этого:

a = [("words",3), ("blah",7), ("hmm",1)]
b = [c[0] for c in a if c[1]==3]
print(b)
>>> b
['words']

Если вам интересно поиск значения, максимально близкого квозможно с заданным значением, я бы сделал что-то вроде этого:

1.Создать массив b со всеми числовыми значениями в a

2.Создать массивкортежи с разницей abs между значениями в b и dot и их индексом

3. Найдите минимальное значение в этом последнем массиве и возьмите соответствующий индекс в b

4. b[index] - это значение, которое нужно искать в a.

def search_element(dot):
    b = [c[1] for c in a]
    index = min([(abs(f-dot),i) for i,f in enumerate(b)])[1]
    n = b[index]
    b = [c[0] for c in a if c[1]==n]
    return b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...