Я ищу способ прочитать этот csv в python 2.7 и превратить его в массив (3,22000). По какой-то причине я не смог этого сделать, независимо от того, каким образом я пытаюсь, я либо получаю группу строк из массива, который я не могу преобразовать, либо массив, который показан ниже, который не будет преобразован в float или разрешить вычисления делать на них. Любая помощь будет оценена по достоинству. СпасибоКак преобразовать из dtype ('o') в dtype (float) в numpy?
Для записи говорится, что форма (22000,), о которой я тоже не уверен.
In [126]: import csv
import numpy as np
with open("Data.csv") as sd:
ri = []
dv = []
for row in csv.reader(sd):
if row != ["ccx","ccy","ccz","cellVolumes","Cell Type"]:
nrow = []
for val in row[0:3]:
val = float(val)
nrow.append(val)
ri.append(nrow)
nrow = []
for val in row[3:4]:
val = float(val)
nrow.append(val)
dv.append(nrow)
ri = np.array(ri)
ri
.
Out[126]: array([[-0.179967, -0.38936, -0.46127], [-0.0633236, -0.407683, -0.542979],
[-0.125841, -0.494202, -0.412042], ...,
[-0.0116821, 0.764493, 0.573541], [0.630377, 0.469657, 0.442017],
[0.248253, 0.615365, 0.354134]], dtype=object
Проверьте длину этих подсписок. Если они все равно, я бы ожидал 2d-массив; но если они отличаются (большинство 3, но некоторые 0, 2,4 и т. д.), то лучшее, что он может сделать, это дать вам 1-й массив «объектов» - списков. – hpaulj
Его файл 3x22000. Есть ли простой способ пропустить это и посмотреть, имеет ли каждый подсписчик одинаковые длины? –
Подождите, не так ли (22000,)? Я просто делал '[len (x) for in x in ri]' перед передачей его в 'np.array'. Возможно, примените 'max' и' min'. Такое понимание списка не займет много времени. – hpaulj