(Python)替换字符串元素数组

时间:2018-12-14 09:06:38

标签: python-3.x

我想替换一个字符串元素数组,但是有一个问题:

这是正确的!

enter image description here

但是,这是错误的:

enter image description here

似乎替换了第一个字符。...

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

我想您想用一些数字替换列表中的一些字符串。您可以通过这样的列表理解轻松地做到这一点。

data = ['C', 'C', 'W', 'C', 'H', 'H', 'W', 'C', 'W', 'H']

data = [15 if x == 'C' else 30 if x == 'W' else x for x in data]

# Output : [15, 15, 30, 15, 'H', 'H', 30, 15, 30, 'H']

答案 1 :(得分:0)

您必须指定dtype才能获得预期的行为,否则它将选择最小大小, 我认为它正在选择chararray,而您正在尝试添加数字/字符串。

使用astype或numpy.array(data,dtype =“”)设置dtype,请看下面numpy.arry的语法

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

根据需要将dtype设置为string / integer / float,请参考文档以准确使用

答案 2 :(得分:0)

我认为您正在将numpy与方法数组https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.array.html一起使用

结构具有dtype,如果未给出,则将类型确定为在序列中保存对象所需的最小类型。

所以:

>>> data
['C', 'W', 'C', 'C', 'W', 'H']
>>> values = numpy.array(data)
>>> values
array(['C', 'W', 'C', 'C', 'W', 'H'], dtype='<U1')

valuesdtype='<U1',即unicode长度1

设置的解决方案dtype是具有所需长度的Unicode:

>>> values = numpy.array(data, dtype='<U256')
>>> values
array(['C', 'W', 'C', 'C', 'W', 'H'], dtype='<U256')
>>> values[values=='C'] = 15
>>> values
array(['15', 'W', '15', '15', 'W', 'H'], dtype='<U256')

是的!