Как прочитать CSV-файл в numpy ndarrays - PullRequest
0 голосов
/ 23 февраля 2020

Я ищу способ прочитать мои csv-file в ndarrays.

myfile.csv

user,latitude,longitude
500,39.984608,116.317761
500,39.984563,116.317517
500,39.984539,116.317294
605,26.16167,119.943128
605,26.161566,119.942352
605,26.161558,119.942401
745,22.814336,108.332281
745,22.81429,108.3322566
745,22.81432,108.3322583

мой код:

import numpy as np
my_data = np.genfromtxt('myfile.csv', delimiter=',', skip_header=True)

type(my_data)
numpy.ndarray

print(my_data)
[[500.         39.984608  116.317761 ]
 [500.         39.984563  116.317517 ]
 [500.         39.984539  116.317294 ]
 [605.         26.16167   119.943128 ]
 [605.         26.161566  119.942352 ]
 [605.         26.161558  119.942401 ]
 [745.         22.814336  108.332281 ]
 [745.         22.81429   108.3322566]
 [745.         22.81432   108.3322583]]

Однако я намерен вывести массивы массивов, каждый массив для одного пользователя, чтобы вывести:

[
  [[500.         39.984608  116.317761 ]
   [500.         39.984563  116.317517 ]
   [500.         39.984539  116.317294 ]]
  [[605.         26.16167   119.943128 ]
   [605.         26.161566  119.942352 ]
   [605.         26.161558  119.942401 ]]
  [[745.         22.814336  108.332281 ]
   [745.         22.81429   108.3322566]
   [745.         22.81432   108.3322583]]
]

Как мне переписать свой код для этого?

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Это решение даст вам numpy.ndarray, разделенное на первый столбец my_data. Если порядок имеет значение, вы можете отсортировать partition_values в понимании или сортировку grouped_values.

import numpy as np


my_data = np.genfromtxt('myfile.csv', delimiter=',', skip_header=True)
partition_values = {row[0] for row in my_data}
grouped_data = np.array([my_data[my_data[:,0] == pvalue, :]
                         for pvalue in partition_values])
0 голосов
/ 23 февраля 2020

Попробуйте это:

def getArraysofArray(my_data):
    FinalList=[]
    temp=[]
    for i in range(len(my_data)):
        if(i==0):
            temp.append(my_data[i])
            continue
        if(my_data[i][0]!=my_data[i-1][0]):
            FinalList.append(temp)
            temp=[]
        if(my_data[i]==my_data[-1]):
            FinalList.append(temp)
        temp.append(my_data[i])
    return FinalList

# Main / Testing of Function
my_data=[[500,39.984608 ,116.317761]
 ,[500,39.984563,116.317517]
 ,[500,39.984539,116.317294]
 ,[605,26.16167,119.943128]
 ,[605,26.161566,119.942352]
 ,[605,26.161558,119.942401]
 ,[745,22.814336,108.332281]
 ,[745,22.81429,108.3322566]
 ,[745,22.81432,108.3322583]]
list=getArraysofArray(my_data)
print(list)
# Output
[[[500, 39.984608, 116.317761], [500, 39.984563, 116.317517], [500, 39.984539, 116.317294]],
 [[605, 26.16167, 119.943128], [605, 26.161566, 119.942352], [605, 26.161558, 119.942401]],
 [[745, 22.814336, 108.332281], [745, 22.81429, 108.3322566], [745, 22.81432, 108.3322583]]]
...