В настоящее время я пытаюсь преобразовать треугольную матрицу в другую форму, подобную этой
S&P 500 Russel 2000 Nasdaq Composite
S&P 500 1 0 0
Russel 2000 4 5 0
Nasdaq Composite 7 8 9
0 1
0 S&P 500 S&P 500
1 Russel 2000 S&P 500
2 Nasdaq Composite S&P 500
3 S&P 500 Russel 2000
4 Russel 2000 Russel 2000
...
То есть я пытаюсь сделать повторяющиеся столбцы для каждого индекса или наоборот.
Я использовал язык J, ориентированный на массивы, но я новичок в python numpy. Ребята, вы можете мне помочь с этой проблемой?
Заранее спасибо =]






Во-первых, это похоже на проблему, которую легче решить с помощью панды.
Я установил кое-что, что может помочь, но если вы действительно застряли в использовании Numpy, это не будет правильным решением вашей проблемы.
Сначала я установил аналогичный объект DataFrame для вашего массива numpy:
$ import pandas as pd
$ df = pd.DataFrame(columns=['a','b','c'], index=['a','b','c'])
a b c
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
Затем я заполнил его значениями, которые вы запрашивали, хотя я ими не пользуюсь.
$ df['a'] = [1, 4, 7]
$ df['b'] = [0, 5, 8]
$ df['c'] = [0, 0, 9]
a b c
a 1 0 0
b 4 5 0
c 7 8 9
Наконец, я просто взял индекс и столбцы и использовал функцию продукт из itertools, чтобы получить каждую комбинацию в списке кортежей.
$ from itertools import product
$ p = product(df.columns.values, df.index.values)
$ new_df = pd.DataFrame([i for i in p])
0 1
0 a a
1 a b
2 a c
3 b a
4 b b
5 b c
6 c a
7 c b
8 c c
Я бы посмотрел документацию Pandas. У них есть много функций для управления фреймами данных способами, которые могут вас заинтересовать.