我如何从unicode(utf-8)csv文件导入到numpy数组

时间:2011-08-02 11:06:44

标签: python numpy

我不是试图聪明或快速地做这件事,只是试着去做。

我的文件看起来像这样:

$ cat all_user_token_counts.csv  
@5raphaels,in,15
@5raphaels,for,15
@5raphaels,unless,11
@5raphaels,you,11

我知道它的uncode utf-8编码,因为我创建了它,就像这个

    debug('opening ' + ALL_USER_TOKEN_COUNTS_FILE)
    file = codecs.open(ALL_USER_TOKEN_COUNTS_FILE, encoding="utf-8",mode= "w")
    for (user, token) in tokenizer.get_tokens_from_all_files():
        #... count tokens ..
        file.write(unicode(username +","+ token +","+ str(count) +"\r\n"))

我想把它读成一个numpy数组,所以它看起来像这样,或者其他东西..

   array([[u'@5raphaels', u'in', 15],
          [u'@5raphaels', u'for', 11],
          [u'@5raphaels', u'unless', 11]], 
          dtype=('<U10', '<U10', int))

当我在编写这个问题的过程中进行实验时,我觉得它甚至可能不可能?如果是这样,我很想知道!

提前致谢!

1 个答案:

答案 0 :(得分:2)

使用np.loadtxt

可以轻松完成此操作
import numpy as np
arr=np.loadtxt('all_user_token_counts.csv',delimiter=',',
                  dtype = '|U10,<U10,int')
print(arr)

# [(u'@5raphaels', u'in', 15) (u'@5raphaels', u'for', 15)
#  (u'@5raphaels', u'unless', 11) (u'@5raphaels', u'you', 11)]