#python
#python
Вопрос:
У меня есть dict под названием GTY со 100 ключами, которые являются комбинациями
range(10,101,10)
(т. е. : (10,10), (10,20), … (90,100), (100,100)).
Я хотел бы «распаковать» этот dict и получить матрицу 10×10 с 0 до 100 (с шагом 10) в столбцах и от 0 до 100 (с шагом 10) в строках.
Я надеялся сделать это, выполнив простую технику распаковки
np.array([GTY[i] for i in itertools.combinations(range(10,101,10), 2)])
но это выдает данные в одном столбце, а не в матрице 10×10. Есть ли эффективный простой способ получить матрицу с ключом-кортежем nr1 в col и ключом-кортежем nr2 в строке?
Большое спасибо!
Комментарии:
1. от 0 до 100 с шагом 10 даст матрицу размером 11 x 11, а не 10×10
2. Не могли бы вы немного конкретнее рассказать о том, как выглядят ваши входные и выходные данные? Не могли бы вы добавить пример ввода и вывод sampe к вашему вопросу?
Ответ №1:
вы могли бы использовать numpy для генерации массива размером 11×11 и product для генерации всех комбинаций:
import numpy as np
z = itertools.product(range(0,101,10),repeat= 2)
z1 = np.array([i for i in z]).reshape(11,11,2)
for i in range(11):
print(f'z[{i}] = {z1[i]}')
выходной сигнал:
z[0] = [[ 0 0] [ 0 10] [ 0 20] [ 0 30] [ 0 40] [ 0 50] [ 0 60] [ 0 70] [ 0 80] [ 0 90] [ 0 100]]
z[1] = [[ 10 0] [ 10 10] [ 10 20] [ 10 30] [ 10 40] [ 10 50] [ 10 60] [ 10 70] [ 10 80] [ 10 90] [ 10 100]]
z[2] = [[ 20 0] [ 20 10] [ 20 20] [ 20 30] [ 20 40] [ 20 50] [ 20 60] [ 20 70] [ 20 80] [ 20 90] [ 20 100]]
z[3] = [[ 30 0] [ 30 10] [ 30 20] [ 30 30] [ 30 40] [ 30 50] [ 30 60] [ 30 70] [ 30 80] [ 30 90] [ 30 100]]
z[4] = [[ 40 0] [ 40 10] [ 40 20] [ 40 30] [ 40 40] [ 40 50] [ 40 60] [ 40 70] [ 40 80] [ 40 90] [ 40 100]]
z[5] = [[ 50 0] [ 50 10] [ 50 20] [ 50 30] [ 50 40] [ 50 50] [ 50 60] [ 50 70] [ 50 80] [ 50 90] [ 50 100]]
z[6] = [[ 60 0] [ 60 10] [ 60 20] [ 60 30] [ 60 40] [ 60 50] [ 60 60] [ 60 70] [ 60 80] [ 60 90] [ 60 100]]
z[7] = [[ 70 0] [ 70 10] [ 70 20] [ 70 30] [ 70 40] [ 70 50] [ 70 60] [ 70 70] [ 70 80] [ 70 90] [ 70 100]]
z[8] = [[ 80 0] [ 80 10] [ 80 20] [ 80 30] [ 80 40] [ 80 50] [ 80 60] [ 80 70] [ 80 80] [ 80 90] [ 80 100]]
z[9] = [[ 90 0] [ 90 10] [ 90 20] [ 90 30] [ 90 40] [ 90 50] [ 90 60] [ 90 70] [ 90 80] [ 90 90] [ 90 100]]
z[10] = [[100 0][100 10][100 20][100 30] [100 40] [100 50] [100 60] [100 70] [100 80] [100 90] [100 100]]