2015-09-10 5 views
0

Я ищу способ прочитать этот 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 
+0

Проверьте длину этих подсписок. Если они все равно, я бы ожидал 2d-массив; но если они отличаются (большинство 3, но некоторые 0, 2,4 и т. д.), то лучшее, что он может сделать, это дать вам 1-й массив «объектов» - списков. – hpaulj

+0

Его файл 3x22000. Есть ли простой способ пропустить это и посмотреть, имеет ли каждый подсписчик одинаковые длины? –

+0

Подождите, не так ли (22000,)? Я просто делал '[len (x) for in x in ri]' перед передачей его в 'np.array'. Возможно, примените 'max' и' min'. Такое понимание списка не займет много времени. – hpaulj

ответ

0

(от полезных комментариев)

Проверьте длину этих подсписков. Если они все равно, я бы ожидал 2d-массив; но если они отличаются (большинство 3, но некоторые 0, 2,4 и т. д.), то лучшее, что он может сделать, это дать вам 1-й массив «объектов» - списков.

Я бы просто сделал [len(x) for x in ri] перед передачей его np.array. Возможно, примените max и min. Такое понимание списка не займет много времени.

+0

Не могу подняться, пока не хватит репутации, но я вернусь, как только я это сделаю! –

+0

Кроме того, его [len (x) для x в ri]. –

 Смежные вопросы

  • Нет связанных вопросов^_^