Как мне повторить этот список, чтобы создать матрицу? - PullRequest
0 голосов
/ 05 октября 2018

В онлайн-курсе частью упражнения является создание матрицы.

Нам были предоставлены следующие данные:

KobeBryant_FT = [696,667,623,483,439,483,381,525,18,196]
JoeJohnson_FT = [261,235,316,299,220,195,158,132,159,141]
LeBronJames_FT = [601,489,549,594,593,503,387,403,439,375]
CarmeloAnthony_FT = [573,459,464,371,508,507,295,425,459,189]
DwightHoward_FT = [356,390,529,504,483,546,281,355,349,143]
ChrisBosh_FT = [474,463,472,504,470,384,229,241,223,179]
ChrisPaul_FT = [394,292,332,455,161,337,260,286,295,289]
KevinDurant_FT = [209,209,391,452,756,594,431,679,703,146]
DerrickRose_FT = [146,146,146,197,259,476,194,0,27,152]
DwayneWade_FT = [629,432,354,590,534,494,235,308,189,284]

, чтобы создать матрицу, это было быкод:

FT = np.array([KobeBryant_FT, JoeJohnson_FT, LeBronJames_FT, 
               CarmeloAnthony_FT, DwightHoward_FT, ChrisBosh_FT, ChrisPaul_FT,
               KevinDurant_FT, DerrickRose_FT, DwayneWade_FT])

Мне было интересно, есть ли способ использовать цикл for для эмуляции вывода вышеприведенного кода без необходимости вручную вводить KobeBryant_FT, JoeJohnson_FT, LeBronJames_FT и т. д. и т. д.

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

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

d = {"KB":[696,667,623,483,439,483,381,525,18,196], "JJ":[261,235,316,299,220,195,158,132,159,141]}
np.stack(d.values())
# Out[32]: 
# array([[261, 235, 316, 299, 220, 195, 158, 132, 159, 141],
#        [696, 667, 623, 483, 439, 483, 381, 525,  18, 196]])

Если вы хотите, чтобы массив был в определенном порядке, вы можете использоватьПриказ:

from collections import OrderedDict
d = OrderedDict({"KB":[696,667,623,483,439,483,381,525,18,196], "JJ":[261,235,316,299,220,195,158,132,159,141]})
np.stack(d.values())
0 голосов
/ 05 октября 2018

Зависит от того, как вы получите эти данные.Если он находится в файле * .txt, вы можете прочитать его строка за строкой (если вы хотите назначить одновременно имя со списком) или просто прочитать все сразу, используя регулярное выражение ищите что-нибудь в квадратных скобках.

import re

file = open("data.txt","r").read()

lists_txt = re.finditer('[\[].*[\]]$', file, flags=re.MULTILINE)
#item in lists_txt = anything found inside [] brackets.

for item in lists_txt:
    txt = str(item.group(0))
    print(txt[1:-1])

Вывод из программы:

696,667,623,483,439,483,381,525,18,196
261,235,316,299,220,195,158,132,159,141
601,489,549,594,593,503,387,403,439,375
573,459,464,371,508,507,295,425,459,189
356,390,529,504,483,546,281,355,349,143
474,463,472,504,470,384,229,241,223,179
394,292,332,455,161,337,260,286,295,289
209,209,391,452,756,594,431,679,703,146
146,146,146,197,259,476,194,0,27,152
629,432,354,590,534,494,235,308,189,284

Вы должны получить строки чего-либо внутри [].Теперь , используя .split (",") , вы можете преобразовать их в списки.

Надеюсь, это поможет вам:)

0 голосов
/ 05 октября 2018

Попробуйте,

import pandas as pd
df = pd.DataFrame(FT)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...