如何使用python将数组替换为数组中的字符串

时间:2014-02-27 16:52:33

标签: python numpy

我有一个数据数组,我想用一个字符串'INDE'替换所有大于50的值。我怎么能在python中做到这一点?

我试过了:

import numpy as np

row={'time': 10, 'tsys_1': [85.1, 91.8, 94.3, 37.1, 12.2, 17.4, 78.5, 68.8],'subarray': 1}

data=np.array(row['tsys_1'][0:8])

for i in range(len(data)):
    if data[i] > 50:
        data[i] = 'INDE'

但是发生了这个错误:

ValueError: could not convert string to float: INDE

我该怎么做?

1 个答案:

答案 0 :(得分:3)

在纯python中执行此操作可能更好。

>>> row['tsys_1'] = ['INDE' if x > 50 else x for x in row['tsys_1']]
>>> row
{'subarray': 1,
 'time': 10,
 'tsys_1': ['INDE', 'INDE', 'INDE', 37.1, 12.2, 17.4, 'INDE', 'INDE']}

有一个numpy数组,这是一个字符串和数字的混合有点打败了首先有一个numpy数组的目的。但是,如果你真的想要,那就是你如何得到它:

>>> data = np.array(row['tsys_1'][0:8]).astype(object)
>>> data[data > 50] = 'INDE'
>>> data
array(['INDE', 'INDE', 'INDE', 37.1, 12.2, 17.4, 'INDE', 'INDE'], dtype=object)

如果你想在numpy中掩盖这些值,你可能想要看一下使用一个蒙面数组(在numpy.ma中)或者使用类似np.nan之类的掩码值来代替这个字符串{ {1}}。