我需要计算特定数组的平均值,并创建一个与另一个数组串联的新数组。可以说我的数组如下:
[[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方法来执行此操作,但是我需要不使用循环来执行此操作。
答案 0 :(得分:2)
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 ]]
答案 1 :(得分:0)
您可以使用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 ]])