在numpy记录数组中格式化"Kilo","Mega","Gig"数据

Rit*_*esh 3 python numpy matplotlib

我试图绘制这种csv格式的东西:时间戳,值.但这些值不是实数,而是大值的缩写(k = 1000,M = 1000000等).

2012-02-24 09:07:01, 8.1M
2012-02-24 09:07:02, 64.8M
2012-02-24 09:07:03, 84.8M
2012-02-24 09:07:04, 84.8M
2012-02-24 09:07:05, 84.8M
2012-02-24 09:07:07, 84.8M
2012-02-24 09:07:08, 84.8M
2012-02-24 09:07:09, 84.8M
2012-02-24 09:07:10, 84.8M
Run Code Online (Sandbox Code Playgroud)

我通常使用numpy记录数组来存储csv matplotlib.mlab.csv2rec(infile).但只有在值不是缩写形式时才有效.有没有一个简单的方法来实现这一点,而实际上我的程序读取每个值,寻找'M'将84.8M转换为84800000?

Nik*_* B. 5

另一种可能是以下转换功能:

conv = dict(zip('kMGT', (3, 6, 9, 12)))
def parse_number(value):
  if value[-1] in conv:
    value = '{}e{}'.format(value[:-1], conv[value[-1]])
  return float(value)
Run Code Online (Sandbox Code Playgroud)

例:

>>> parse_number('1337')
1337.0
>>> parse_number('8.1k')
8100.0
>>> parse_number('8.1M')
8100000.0
>>> parse_number('64.367G')
64367000000.0
Run Code Online (Sandbox Code Playgroud)