pandas 有什么办法把二维数组合并成一个列表吗?

iyfjxgzm  于 2022-12-28  发布在  其他
关注(0)|答案(5)|浏览(130)

我正在用python做一个线性回归的学校项目。我想把我的7 * 12的二维数组合并到一维列表中。这是我原来的数组。

y = df["fatalProb"].values.reshape(7,12)
print(y)
[[0.3725 0.4336 0.537  0.392  0.233  0.2892 0.2721 0.2392 0.2281 0.2689
  0.2898 0.2825]
 [0.3112 0.3936 0.3874 0.2793 0.2416 0.275  0.2802 0.2587 0.2583 0.258
  0.2906 0.2927]
 [0.3486 0.3278 0.3836 0.3041 0.2477 0.2734 0.276  0.2903 0.2531 0.2659
  0.2928 0.2896]
 [0.3044 0.4032 0.3665 0.3275 0.2939 0.2882 0.3089 0.2949 0.2547 0.2699
  0.2973 0.2869]
 [0.3488 0.3651 0.4307 0.3361 0.2833 0.3035 0.3051 0.2898 0.2695 0.271
  0.2787 0.3034]
 [0.3559 0.3357 0.4075 0.3428 0.2834 0.3156 0.2952 0.2992 0.2795 0.2806
  0.2905 0.267 ]
 [0.3965 0.3814 0.4735 0.3813 0.3089 0.3105 0.3282 0.3047 0.2834 0.2974
  0.2737 0.2986]]

我希望我的y是一个长度为12的列表。它是一个包含所有添加值的列表,并且每个列表都有一个相同的索引。(抱歉,英语不好)
例如)
[[a,b,c],[d,e,f],[g,h,i]][a+d+g,b+e+h,c+f+i]
我考虑过使用列表解析。但是我不太乐意使用

y = [y[0][j]+y[1][j]+y[2][j]+y[3][j]+y[4][j]+y[5][j]+y[6][j] for j in range(len(y[0]))]
nimxete2

nimxete21#

下面是你对清单的理解:

[sum(el) for el in zip(*y)]

结果:

[2.4379, 2.6404, 2.9861999999999997, 2.3631, 1.8918, 2.0553999999999997, 2.0656999999999996, 1.9768, 1.8266, 1.9116999999999997, 2.0134, 2.0206999999999997]
stszievb

stszievb2#

你的y是从一个 Dataframe 中派生出来的,它是2d的;一个简单的例子:

In [25]: y = np.arange(12).reshape(3,4)    
In [26]: y
Out[26]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

使用sum方法,可以垂直或水平添加值:

In [27]: y.sum(axis=0)
Out[27]: array([12, 15, 18, 21])

In [28]: y.sum(axis=1)
Out[28]: array([ 6, 22, 38]
tpgth1q7

tpgth1q73#

根据您的示例"[[a,b,c],[d,e,f],[g,h,i]]至[a + d + g,b + e + h,c + f + i]"检查以下代码

df = pd.DataFrame({'col':[1,2,3], 'col2':[3,4,5], 'col3':[6,7,8]})
list(df.values.sum(axis=1))

输出:

[10, 13, 16]
myzjeezk

myzjeezk4#

在获得y之后,您需要做的就是
y = y.sum(axis=0).tolist()
它会将你的(7,12)形矩阵沿着列求和,并给予你一个形状为(1,12)的数组,该数组可以转换为一个列表。@hpaulj给出了详细的解释。

ryhaxcpt

ryhaxcpt5#

您可以用途:

l=[]
k=[]
for j in range(len(y[0])):
    for i in range(0,7):
        l.append(y[i][j])
    k.append(sum(l))
y=k

输出:

print(y)
    [2.4379,
     5.0783000000000005,
     8.0645,
     10.4276,
     12.319400000000002,
     14.3748,
     16.4405,
     18.417299999999997,
     20.243899999999996,
     22.155599999999993,
     24.168999999999997,
     26.189699999999995]

检查镜头y:

len(y)
12

相关问题