Я работаю над Python около 2 месяцев, поэтому у меня есть понимание этого.Создание матрицы из файла CSV
Моя цель - создать матрицу с использованием CSV-данных, а затем заполнить эту матрицу из данных в третьем столбце этого CSV-файла.
Я придумал этот код до сих пор:
import csv
import csv
def readcsv(csvfile_name):
with open(csvfile_name) as csvfile:
file=csv.reader(csvfile, delimiter=",")
#remove rubbish data in first few rows
skiprows = int(input('Number of rows to skip? '))
for i in range(skiprows):
_ = next(file)
#change strings into integers/floats
for z in file:
z[:2]=map(int, z[:2])
z[2:]=map(float, z[2:])
print(z[:2])
return
После удаления мусора данных с указанным кодом, данные в файле CSV выглядит следующим образом:
Input:
1 1 51 9 3
1 2 39 4 4
1 3 40 3 9
1 4 60 2 .
1 5 80 2 .
2 1 40 6 .
2 2 28 4 .
2 3 40 2 .
2 4 39 3 .
3 1 10 . .
3 2 20 . .
3 3 30 . .
3 4 40 . .
. . . . .
Выход должен выглядят так:
1 2 3 4 . .
1 51 39 40 60
2 40 28 40 39
3 10 20 30 40
.
.
В этом CSV-файле имеется несколько тысяч строк и столбцов, однако Меня интересуют только первые 3 столбца файла CSV. Таким образом, первый и второй столбцы в основном похожи на координаты для матрицы, а затем заполняют матрицу данными в третьем столбце.
После многих проб и ошибок я понял, что numpy - это способ пойти с матрицами. Это то, что я пытался до сих пор с примером данных:
left_column = [1, 2, 1, 2, 1, 2, 1, 2]
middle_column = [1, 1, 3, 3, 2, 2, 4, 4]
right_column = [1., 5., 3., 7., 2., 6., 4., 8.]
import numpy as np
m = np.zeros((max(left_column), max(middle_column)), dtype=np.float)
for x, y, z in zip(left_column, middle_column, right_column):
x -= 1 # Because the indicies are 1-based
y -= 1 # Need to be 0-based
m[x, y] = z
print(m)
#: array([[ 1., 2., 3., 4.],
#: [ 5., 6., 7., 8.]])
Однако, это нереально для меня, чтобы указать все мои данные в моем сценарии для создания матрицы. Я попытался использовать генераторы, чтобы вытащить данные из моего CSV-файла, но для меня это не сработало.
Я узнал столько же, сколько мог, но, похоже, он требует, чтобы мои данные уже были в матричной форме, а это не так.
Я не понимаю смысла последних двух столбцов. Первые три ясны ... (строка, столбец, значение) – Nikaidoh