假设我有一个字符串列表:
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)
如何摆脱其他元素的引用,即将其他数字转换为整数值,以便我可以用它们进行计算?
答案 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))
(由于字符串实际上表示浮点数而不是整数,因此必须先将它们转换为浮点数。)