在csv中将字符串条目写入python中的数组?

时间:2013-07-18 20:59:19

标签: python arrays string numpy

我正在努力将字符串值放入python中的数组中。我有一个文件,大约30k条目长,每行看起来像这样:

0R1,SN = 0.3M,SM = 0.7M,SX = 1.5M

我不需要0R1部分;我只需要一个数组中的所有Sn值,另一个数组中的Sm值,另一个数组中的Sx值(当然,我还没弄清楚我是如何从字符串中获取数值的,但是我稍后会考虑这个问题。我想,现在我正在尝试制作一个字符串数组。

这是我的代码:

fname = '\\pathname...\\WXT51003.txt'
f1 = open(fname, 'r')

import csv
import numpy
from numpy import zeros
reader = csv.reader(f1)
Max = zeros((29697,1), dtype = numpy.str)
Mean = zeros((29697,1), dtype = numpy.str)
Min = zeros((29697,1), dtype = numpy.str)
for i, row in enumerate(reader):
    Min[i] = row[1]
    Mean[i] = row[2]
    Max[i] = row[3]

f1.close()
print Min[0:10]

print语句的输出是每行中带“S”的数组。如何让它读取整个字符串,而不仅仅是第一个字符?

1 个答案:

答案 0 :(得分:3)

reader = csv.reader(f1)
rows = list(reader)
cols = zip(*rows)
Min = cols[1]
Mean = cols[2]
Max = cols[3]


# or if you really want numpy.arrays
Min = numpy.array(cols[1]) #dtype will be auto-assigned
Mean = numpy.array(cols[2]) #dtype will be auto-assigned
Max = numpy.array(cols[3]) #dtype will be auto-assigned

是我怎么做的...(不要使用numpy ......至少还没有)

如果你需要使用numpy然后使用dtype“S8”或者你需要你的字符串...或者使用dtype.object或其他...默认情况下它将是一个len1字符串类型...但实际上我没有理由根据你的代码片段使用numpy