Problems With Reading In Csv Values Into 2d Numpy Array
I am having issues reading in values from a saved csv file. This is part of the csv file that I have: 000000216739.jpg, 224, [ 0. 0. 0. 0. 36. 44. 4. 0. 0. 0. 0. 0. 0.
Solution 1:
I presume your data is like this; filename,nrows,[imrow1],[imrow2],[imrow3], ...,[imrow_nrows] then do the following to extract the image from your data. Let us know if your data is formatted differently.
withopen(CSVFilepath) as f:
reader = csv.reader(f,delimiter=',')
forrowin reader:
fname=row[0]
nrows=int(row[1])
imdata=np.array(row[2:]) #Getfrom the 2 element to the end. Could also do row[:-nrows]
#might need to make each element an intor float.
###reshape if that's what you need and do something with the image
Solution 2:
Your file is not a correct csv file, and you should not read it like a csv file.
The linebreak in csv file represent a new row whereas it's apparent that in your file they don't mean that - you want to read the numbers inside [
and ]
but they're not delimited properly.
A way to dissect this file would be to
withopen(file,'r') as fin:
f = fin.readlines()
f =' '.join(f) # remove newlines
listrows = f.split('[')
listrows = [l.split(']')[0] for l in listrows] # Get string between'['and']'
matrix = [row.split('.') forrowin listrows] # This is now a 2D matrix
final= [[int(e.replace(' ','')) for e inrow] forrowin matrix] # Here goes your final matrix
I used list comprehension extensively so this does not go to 30 lines. Try running this.
Post a Comment for "Problems With Reading In Csv Values Into 2d Numpy Array"