我想使用函数.astype(float)
将名为Defocus_Array的数组转换为float。但我得到了这个错误。
>>> Defocus_Array.astype(float)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: defocus
我理解&#34; defocus&#34;提取的数据的名称是问题。我尝试使用numpy.delete
删除它,但它不起作用。如何删除它以转换我的数组?或者它是转换我的数组的另一种方式?谢谢。
答案 0 :(得分:1)
Defocus_Array = np.array(('123.3', '0', 'defocus'))
Defocus_Array.astype(float) # ValueError: could not convert string to float: defocus
Defocus_Array[2] = 'nan'
Defocus_Array.astype(float) # array([ 123.3, 0. , nan])
或者,更一般地说:
Defocus_Array[Defocus_Array == 'defocus'] = 'nan'
Defocus_Array.astype(float)
或者,如果您只想忽略'defocus'值:
Defocus_Array[Defocus_Array != 'defocus'].astype(float)
答案 1 :(得分:1)
你可以编写一个适用于整个数组的函数:
def safe_float(f, default=0):
try:
return float(f)
except ValueError:
return default
print z
## ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'foo']
numpy.vectorize(safe_float)(z)
## array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 0.])