Используйте numpy массив / список в качестве индекса в строке - PullRequest
2 голосов
/ 29 апреля 2020

У меня есть строка скажем s='abcd...z' и многомерный массив numpy - например, arr = [[2, 5, 11], [1, 3, 9]]. Как я могу использовать массив в качестве индекса в строке? Я хочу получить вывод str_arr = [['b', 'e', 'k'],['a', 'c', 'i']].

Я могу сделать это, используя списки или циклы, но я не уверен, что это самые быстрые методы (особенно если массив большой). Любые векторизованные методы? Также ищет что-то, что работает не только получил 2-мерные массивы, но и любое измерение.

Ответы [ 2 ]

3 голосов
/ 29 апреля 2020

Вы можете векторизовать его, создав массив сопоставления:

import string
import numpy as np
map = np.array(list(string.ascii_lowercase))
arr = np.array([[2, 5, 11], [1, 3, 9]])
map[arr-1]

Результат:

array([['b', 'e', 'k'],
       ['a', 'c', 'i']], dtype='<U1')
0 голосов
/ 29 апреля 2020

Только для другой информации, используя для циклов, в 2D массиве:

[[s[i] for i in arr[j]] for j in range(len(arr))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...