Как интерпретировать результат `np.where`? - PullRequest
1 голос
/ 09 ноября 2019

Я - новичок в Numpy, и у меня нет твердого основания. В настоящее время я пытаюсь определить наибольшее целое число в каждой строке массива, строку и столбец, где находится целое число в массиве, и распечатать его.

Однако при попытке распечатать строку истолбец для самого большого целочисленного элемента, я понимаю, что вывод продолжает печатать местоположение элемента с "(массив ..)". В любом случае я могу удалить (array...) из моего вывода?

import numpy as np

a = np.random.randint(1,1000,(3,4))

#MAX A(s)
maxa = a.max(axis = 1)
arra1 = maxa[np.asarray(0)]
arra2 = maxa[np.asarray(1)]
arra3 = maxa[np.asarray(2)]

#LOCATION OF MAX A(s)
arra1loc = np.where(a == arra1)

print('*** Contents of array a ***')
print(a)
print()

print('Max a = {}'.format(arra1))
print('Row and Column of {} is {}'.format(arra1,arra1loc))

Мой текущий вывод:

*** Contents of array a ***
[[459 472 918  50]
 [562 556 145 843]
 [638 797 872  61]]

Max a = 918
Row and Column of 918 is (array([0]), array([2]))

То, что я хочу, чтобы это было:

*** Contents of array a ***
[[459 472 918  50]
 [562 556 145 843]
 [638 797 872  61]]

Max a = 918
Row and Column of 918 is ([0], [2])

1 Ответ

0 голосов
/ 09 ноября 2019

Ваш array1loc на самом деле tuple из ndarray, как мы видим здесь (array([0]), array([2])), и вы можете подтвердить с помощью

print(type(arra1loc))    # <class 'tuple'>
print(type(arra1loc[0])) # <class 'numpy.ndarray'>

Так что вам нужно подать tolist() каждому ndarray вашего tuple

# from numpy import ndarray
arra1loc = tuple(map(ndarray.tolist, arra1loc))
print('Row and Column of {} is {}'.format(arra1, arra1loc)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...