如何在numpy中将dtype(' o')转换为dtype(float)?

时间:2015-09-10 01:56:14

标签: python arrays numpy

我正在寻找一种方法将这个csv读入python 2.7并将其转换为(3,22000)数组。出于某种原因,我无法做到这一点,无论我尝试哪种方式,我要么得到一个我无法转换的数组中的字符串,或者下面看到的数组不能转换为浮点数或允许对它们进行计算。任何帮助,将不胜感激。感谢

对于记录,它说形状是(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

1 个答案:

答案 0 :(得分:0)

(来自有用的评论)

检查这些子列表的长度。如果他们都一样,我期待一个二维阵列;但如果它们不同(大多数为3,但有些为0,2,4等),那么它能做的最好的就是给你一个1d的“对象”数组。 - 清单。

我会先将[len(x) for x in ri]传递给np.array。也许应用maxmin。这样的列表理解不会花费很长时间。