numpy错误中的掩码数组

问题描述

| 我使用
genfromtxt
输入了文件,但缺少某些值,因此生成了一个掩码数组。当我尝试为掩码数组的记录的一些值编制索引时,出现错误,我无法弄清。任何帮助将不胜感激。谢谢。 -亚历克斯
import csv
import datetime
import time
import numpy as np
import numpy.lib.recfunctions as rf
import pprint
import numpy.ma as ma

date_converter = lambda x: datetime.date(int(x[-4:]),int(x[3:5]),int(x[:2]))
input_file = np.genfromtxt(\"../data/test.csv\",usemask=True,converters={0:date_converter},dtype=\"O4,i8,i8\",names=\"date,firm,val1,val2,val3\",delimiter=\",\",skip_header=1)
产生:
masked_array(data = [(datetime.date(2001,3,1),1L,--,14L,15L)
 (datetime.date(2001,2,10L,11L,12L)
 (datetime.date(2001,5,19L,20L,21L)
 (datetime.date(2001,4,16L,18L)],mask = [(False,False,True,False) (False,False)
 (False,False)],fill_value = (\'?\',999999L,999999L),dtype = [(\'date\',\'|O4\'),(\'firm\',\'<i8\'),(\'val1\',(\'val2\',(\'val3\',\'<i8\')])
当我运行
input_file[0]
时,出现以下错误:
Traceback (most recent call last):
  File \"<pyshell#278>\",line 1,in <module>
    input_file[0]
  File \"C:\\Python27\\lib\\site-packages\\numpy\\ma\\core.py\",line 2956,in __getitem__
    dout = mvoid(dout,mask=mask)
  File \"C:\\Python27\\lib\\site-packages\\numpy\\ma\\core.py\",line 5529,in __new__
    _data[()] = data
ValueError: Setting void-array with object members using buffer.

解决方法

input_file [0]不是访问掩码数组中数据的正确方法(请参阅文档) 例如:
>>> import numpy as np
>>> arr = np.ma.ones(3,dtype=[(\'c1\',np.int),(\'c2\',np.int)])
>>> arr.mask[0][1] = True
>>> arr.data[0][0] = 2              
>>> np.ma.getdata(arr)[1][0] = 3    
>>> arr.data[2][0] = 4       
>>> print(arr)
   [(2,--) (3,1) (4,1)]

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...