обновление словаря с именами для столбцов массива - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь создать словарь с некоторыми NumPy столбцами массивов и их именами. Что такое pythoni c способ сделать это? Код ниже не дает мне правильный результат. Дикт d должен иметь имя переменной в качестве ключа и соответствующий столбец в качестве значения. например {'X': первый столбец, ...}

names = ['X' , 'Y', 'Z', 'W']
d = {}
x = np.random.randint(100, size = 40).reshape(10,4) 
for i in range(0,len(names)):
    for j in range(x.shape[1]):
        d[names[i]] = x[:,j]

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

, если вы хотите использовать for l oop, вы можете использовать:

d = {}
for n , c in zip(names, range(x.shape[1])):
    d[n] = x[:,c] 

или:

d = {}
for n , c in zip(names, x.T):
    d[n] = c

, если вы хотите понимать словарь (немного быстрее ):

{n: x[:,c]  for n , c in zip(names, range(x.shape[1]))}

или

{k: v for k, v in zip(names, x.T)}

выход:

{'X': array([18, 51,  1, 41, 57, 66,  7, 30, 40, 83]),
 'Y': array([87,  2,  6, 64, 25, 80, 47, 81, 50, 84]),
 'Z': array([50, 48, 13, 94, 40, 21, 71, 31, 23, 49]),
 'W': array([32, 49, 95, 58, 87, 83, 10, 50, 83, 85])}
0 голосов
/ 30 марта 2020

Вы можете сделать это следующим образом:

d = dict(zip(names,x.T))

x.T транспонирует массив, поэтому он имеет форму (4,10) вместо (10,4).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...