在python中将字符串列表转换为整数,跳过屏蔽的术语

时间:2014-03-13 21:36:00

标签: python numpy integer masking

假设我有一个字符串列表:

fnew:

masked_array(data = [-- -- '56527.9529' '56527.9544' '109.7147' '0.0089' '14.3638' '0.0779'
 '14.3136' '0.0775' '14.3305' '0.1049' '14.3628' '0.0837' '14.3628'
 '0.0837' '70.9990' '40.0050' '173.046' '-30.328' '73' '-99.175' '0.000'
 '0.000' '59.8' '0.0' '1.0'],

mask = [ True  True False False False False False False False False False False
 False False False False False False False False False False False False
 False False False],
       fill_value = N/A)

如何摆脱其他元素的引用,即将其他数字转换为整数值,以便我可以用它们进行计算?

3 个答案:

答案 0 :(得分:2)

这样的事情:

>>> import numpy as np
>>> a = ['Foo', '59.8', 'bar', 'spam']
>>> arr = np.ma.array(a, mask=[True, False, True, True])
>>> arr.compressed().astype(float)
array([ 59.8])
>>> arr[arr.mask].data
array(['Foo', 'bar', 'spam'], 
      dtype='|S4')

答案 1 :(得分:0)

可能拉链的东西。你的数据结构不是很清楚,但是:

[int(float(val)) for val, maskVal in zip(masked_array, mask) if maskVal]

应该很接近。

答案 2 :(得分:0)

这正是itertools.compress的用途:

from itertools import compress

array_o_nums = map(lambda x: int(float(x)), itertools.compress(data, mask))

(由于字符串实际上表示浮点数而不是整数,因此必须先将它们转换为浮点数。)