计算平均值并附加到新数组numpy

2024-04-20 01:30:38 发布

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

我需要计算特定数组的平均值,并创建一个与另一个数组连接的新数组。假设我的数组如下:

[[99 73 97 98]
 [98 71 70 99]]

我还有另一个数组:['1' '2']

所以基本上我需要的是:[[1. 2.] [91.75 84.5]]

换句话说,第一行就是第二个数组,第二行是数组中每个元素的平均值

[[99 73 97 98]
 [98 71 70 99]]

数组。你知道吗

(如果有用的话,我有一个csv文件:)

student_id, 521, 597, 624, 100, 
1, 99, 73, 97, 98, 
2, 98, 71, 70, 99,

student_id行是学生的id,每隔一行的第一个数字是练习编号,其余的是成绩。我需要创建一个数组,其中包含练习数和每个练习的平均成绩。你知道吗

我知道用vstack方法可以做到这一点,但是我需要不使用循环。你知道吗


Tags: 文件csv方法id元素数字数组student
2条回答

使用mean,然后使用vstack

import numpy as np

ids = np.array([1, 2])  # this is just array2
arr = np.array([[99, 73, 97, 98],
          [98, 71, 70, 99]])
result = np.vstack((ids, np.mean(arr, axis=1)))
print(result)

输出

[[ 1.    2.  ]
 [91.75 84.5 ]]

您可以使用Pandas,它简化了从CSV文件读取结构化数据的过程:

import pandas as pd
from io import StringIO

x = """student_id, 521, 597, 624, 100
1, 99, 73, 97, 98
2, 98, 71, 70, 99
"""

# replace StringIO(x) with 'file.csv'
df = pd.read_csv(StringIO(x))

# calculate mean by row
df['mean'] = df.iloc[:, 1:].mean(1)

# select columns and transpose
res = df[['student_id', 'mean']].values.T

# array([[  1.  ,   2.  ],
#        [ 91.75,  84.5 ]])

相关问题 更多 >