简体   繁体   中英

How to read csv file to numpy ndarrays

I am looking for a way to read my csv-file into an 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

my code:

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]]

However, my intented output is to get an arrays of array, each array for one user, so that the output is:

[
  [[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]]
]

How do I rewrite my code to do this?

This solution will give you a numpy.ndarray partitioned by the first column of my_data . If order matters, you can sort either partition_values in the comprehension, or sort 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])

Try this:

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]]]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM