numpy中的矩阵整形

2024-04-29 07:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正试图把一个三角形矩阵重塑成这样一个不同的形式

              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还很陌生。你们能帮我解决这个问题吗

提前感谢=]


Tags: numpy语言面向矩阵数组形式重塑composite
1条回答
网友
1楼 · 发布于 2024-04-29 07:40:17

首先,这个问题看起来更容易被pandas解决

我已经设置了一些可能有帮助的东西,但是如果你真的坚持使用Numpy,那么它将不是解决你问题的正确方法

首先,我为您的numpy数组设置了一个类似的DataFrame对象:

$ 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中的product函数将每个组合放入一个元组列表中

$ 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

我想看看熊猫的资料。它们有许多函数可以以您可能感兴趣的方式操纵数据帧

相关问题 更多 >