Каждый элемент массива «данные» должны быть изменены следующим образом:расположение элементов в Python
Например, 4 следует рассматривать в names_A и data_A. Названия_A для 4 - это «Давид». Теперь «Давид» следует видеть в именах_B и data_B. Data_B для 'David' равен 30. Итак, элемент 4 должен быть изменен на 30; и так далее.
import numpy as np
names_A = ['David', 'Mark', 'Brian', 'Michael']
data_A = [4,3,1,2]
names_B = ['Mark', 'David', 'Michael', 'Brian']
data_B = [51,30,11,29]
data = np.array([[4,4,3,3,2,2,1,1,3,3],
[4,3,3,3,2,2,3,1,3,1],
[4,2,3,3,2,2,4,1,4,3]])
Как самый простой и простой способ сделать это?
Я попробовал его следующим образом:
dats = data.ravel()
results = []
for d in dats:
nam_A = names_A[data_A == int(d)]
dat_B = data_B[names_B == nam_A]
results.append(dat_B)
print np.array(results).reshape(data.shape)
[[51 51 51 51 51 51 51 51 51 51]
[51 51 51 51 51 51 51 51 51 51]
[51 51 51 51 51 51 51 51 51 51]]
Но это дает неправильные результаты. Как бы вы это сделали?
Да, его хорошее решение, однако, я не очень знакомый со словарем, особенно с картографированием, которую вы создали. Так что вы можете проверить мой код в моем отредактированном вопросе, хотя я уже принял ваше решение. – jean
Как я уже сказал, я не знаю 'numpy', но ваше решение выглядит странно (aka _wrong_). Если вы не знаете, что словарь заглянул в [tutorial] (https://docs.python.org/3/tutorial/datastructures.html#dictionaries). Это одна из базовых структур данных, которые должен знать каждый программист на Python. - Сейчас я AFK, но позже я смогу установить numpy и покажу вам подробности, если на этот вопрос никто не ответит. – Matthias