将Python掩码列相乘

将Python掩码列相乘,python,astropy,Python,Astropy,我正在读取一个.html文件中的数据,我要做的就是将data['ra']列乘以15。但是,我得到一个错误:: >>> data = ascii.read("Ldwarf.html", format="html", encoding = "ISO-8859-1") >>> data <Table masked=True length=919> designation ra decl 2MASS J00011217+1535355 0.

我正在读取一个.html文件中的数据,我要做的就是将data['ra']列乘以15。但是,我得到一个错误::

>>> data = ascii.read("Ldwarf.html", format="html", encoding = "ISO-8859-1")  
>>> data

<Table masked=True length=919>
designation ra  decl    
2MASS J00011217+1535355 0.0200472   +15.593194  
2MASS J00025097+2454141 0.0474917   +24.903917  
2MASS J00040288-6410358 0.0674667   -64.176611  
>data=ascii.read(“Ldwarf.html”,format=“html”,encoding=“ISO-8859-1”)
>>>资料
名称ra decl
2质量J0001217+1535355 0.0200472+15.593194
2质量J00025097+2454141 0.0474917+24.903917
2质量J00040288-6410358 0.0674667-64.176611

>>数据['ra']
十进制hr
0.0200472
0.0474917
...
23.9783250
23.9993389
>>>数据['ra']=数据['ra']。已填充([-9.99])
>>>数据['ra']=数据['ra']*15。
TypeError:ufunc“multiply”不包含签名匹配的循环

类型dtype(“我无法重现您的问题,但我弥补了数据['ra']不包含数字类型。它看起来像一个unicode字符串

如果是这种情况,可以通过在相乘之前显式指定类型来解决:

数据['ra']=浮点(数据['ra'])

编辑:确定,然后它包含一个数组,因此您需要以兼容的方式修改类型:

data['ra']=np.asarray(data['ra'],dtype='float64')


我无法重现您的问题,但我弥补了数据['ra']不包含数字类型。它看起来像unicode字符串

如果是这种情况,可以通过在相乘之前显式指定类型来解决:

数据['ra']=浮点(数据['ra'])

编辑:确定,然后它包含一个数组,因此您需要以兼容的方式修改类型:

data['ra']=np.asarray(data['ra'],dtype='float64')


它表示
dtype
str10

将其转换为64位实数:

data['ra'] = data['ra'].astype(numpy.float64)

它表示
dtype
str10

将其转换为64位实数:

data['ra'] = data['ra'].astype(numpy.float64)

正如您在html文件中所看到的,应该有918行,但您得到的是919行。具有单位定义的行被读取为第一个数据行,它会将所有内容都弄乱。这就是为什么您将第一个“ra”视为“decimal hr”,而不是数字,并且列数据类型被推断为dtype='str10'

您可以使用“data\u start”参数放弃有问题的行:

data = ascii.read("Ldwarf.html", 
                  format="html", 
                  encoding="ISO-8859-1", 
                  data_start=2)

现在,输入类型已正确推断,将15乘以“ra”应该不会有任何问题。

正如您在html文件中看到的,应该有918行,但得到919行。具有单位定义的行被读取为第一个数据行,它会将所有内容弄乱。这就是为什么您将第一个“ra”视为“十进制hr”而不是数字,列数据类型推断为dtype='str10'

您可以使用“data\u start”参数放弃有问题的行:

data = ascii.read("Ldwarf.html", 
                  format="html", 
                  encoding="ISO-8859-1", 
                  data_start=2)

现在输入类型已正确推断,将“ra”乘以15应该不会有任何问题.

你也可以发布html文件吗?你也可以发布html文件吗?I now get::TypeError:只有length-1数组可以转换为Python scalarsI now get::TypeError:只有length-1数组可以转换为Python scalarsI now get::ValueError:无法将字符串转换为float:“decimal hr”我刚刚看到Pepe的(nudomarinero)响应。他正确地识别了问题是列名。我现在得到::ValueError:无法将字符串转换为float:“decimal hr”我刚刚看到Pepe(nudomarinero)的响应。他正确地识别了问题是列名。