答案 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')
values
和dtype='<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')
是的!