A понимание списка работает как обратный цикл for, который автоматически создает list
для вас. Если вы вложите их с «столбцами» внутри и «строками» снаружи, вы должны получить матрицу (структура вложенного списка):
nums = [[int(val) for val in line.split(',')] for line in my_file.readlines()]
Или, может быть, если у вас есть объект для чтения csv, это может выглядеть так:
nums = [[int(val) for val in line] for line in my_csv_reader]
И теперь у вас есть матрица в переменной с именем nums
благодаря вышеприведенному пониманию списка .
Тогда вам, вероятно, следует использовать numpy для вычисления вашей статистики. Это хорошо, потому что вы можете очень легко получить доступ к столбцам массива numpy, и когда вы это делаете, он возвращает столбец в форме массива numpy. у случайных массивов также есть встроенные методы для среднего и стандартного отклонения. Вы можете привести ваш nums
к массиву numpy, просто передав его в функцию конструктора array()
:
from numpy import array
anums = array(nums)
Затем, если вы хотите перебрать столбцы, используйте нотацию среза массива и переменную shape
, которая является членом каждого массива numpy:
# The 1 index of anums.shape should tell you how many columns you have
for c in range(anums.shape[1]):
column = anums[:,c]
col_mean = column.mean()
col_std = column.std()
# Do something with these variables here, probably