Как можно изменить тип массива? - PullRequest
0 голосов
/ 24 октября 2019

заголовок немного неправильный, но я понятия не имел, что еще я мог бы использовать, sry.

Что у меня есть: у меня есть функция k с двумя входами a и b одного типа "класс 'numpy.ndarray' "и той же формы, который выглядит следующим образом:

(100,)

(100,)

(100,)

(100,)

...

Уголь - это найти минимум каждого вектора (shape = (100,)) для a и найти элемент на b синдекс минимума a.

Так что, если первый вектор a имеет свой минимум в позиции [35], мы хотим, чтобы элемент находился в позиции [35], но из первого вектора b.

Надеюсь, это имеет смысл?

В конце я хотел бы иметь целые числа.

Редактировать:

Вот некоторые примеры ввода

a = [[0.24875591 0.16306678 0.78364326 ... 0.65339055 0.36671955 0.79556977]
 [0.01090705 0.48027704 0.09681013 ... 0.19689527 0.88788462 0.64784676]
 [0.0277094  0.63714653 0.87690794 ... 0.4202944  0.52492127 0.65170223]
 ...
 [0.75916264 0.99673363 0.2800721  ... 0.7501566  0.98627157 0.06429751]
 [0.2447071  0.57766005 0.77387911 ... 0.1023757  0.71880919 0.45419627]
 [0.31396027 0.26280255 0.13444513 ... 0.51871024 0.26153987 0.63990427]]
[[0.24875591 0.16306678 0.78364326 ... 0.65339055 0.36671955 0.79556977]
 [0.01090705 0.48027704 0.09681013 ... 0.19689527 0.88788462 0.64784676]
 [0.0277094  0.63714653 0.87690794 ... 0.4202944  0.52492127 0.65170223]
 ...
 [0.75916264 0.99673363 0.2800721  ... 0.7501566  0.98627157 0.06429751]
 [0.2447071  0.57766005 0.77387911 ... 0.1023757  0.71880919 0.45419627]
 [0.31396027 0.26280255 0.13444513 ... 0.51871024 0.26153987 0.63990427]]

Форма a:

(100,)

(100,)

b = 
[1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1
 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0
 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0]
[1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1
 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0
 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0]

Форма b:

(100,)

(100,)

Форма вывода должна быть примерно такой:

0
1
0
1
1
...

Ответы [ 3 ]

0 голосов
/ 24 октября 2019

Вы можете использовать np.argmin и использовать его для индексации в b:

b[range(len(b)), np.argmin(a, axis=1)]
0 голосов
/ 24 октября 2019

Вот пример решения для массивов случайных целых чисел.

arr_1 = np.random.randint(low=0, high=20, size=(4, 3))
arr_2 = np.random.randint(low=0, high=20, size=(4, 3))

arr_1_min_inds = np.argmin(arr_1, axis=1)

arr_2_res = arr_2[np.arange(arr_1_min_inds.shape[0]), arr_1_min_inds]
0 голосов
/ 24 октября 2019

Использование .astype():

return b[index].astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...