вычисление среднего и добавление в новый массив NumPy - PullRequest
0 голосов
/ 03 января 2019

Мне нужно вычислить и усреднить конкретный массив и создать новый, который соединяется с другим массивом. Допустим, мой массив выглядит следующим образом:

[[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 строка - это идентификатор учащегося, в каждой другой строке первый номер - номер упражнения, а остальные - оценки. Мне нужно создать массив, который содержит номера упражнений и средние оценки каждого.

Я понимаю, что это можно сделать методом vstack, но мне нужно сделать это без с использованием циклов.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Вы можете использовать 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 ]])
0 голосов
/ 03 января 2019

Использовать означает , а затем 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 ]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...