gpt4 book ai didi

python - numpy array 指定一个默认值

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:44 25 4
gpt4 key购买 nike

我有一个 python 列表列表可以转换为 numpy 数组。我已经为 numpy 数组定义了数据类型。一些数组值可能是 None 或 ‘’。如果 numpy 数组各自的 dtype 值为 float 或 int,则会为这些发出错误。如果值为 None 或 ‘’,是否有办法让 numpy 为特定的 dtype 分配 1(或字段指定值)。

例如:下面的代码给出了错误

ValueError:无法将字符串转换为 float 。

    import re
import numpy as np
dt = np.dtype([ ('a', np.int32,),
('b', np.float32),
('c', np.int32,),
('d', np.float32),
('e', np.int32,),
])
npar = np.array(('667000', '0', '0', '', ''), dt)

npar 的预期输出是:(为 d 分配 0.0,为 e 分配 1 作为默认值)

    (667000, 0.0, 0, 0.0, 1) 

我要转换大型多维数组。因此性能是需要考虑的重要因素。

最佳答案

这可能有效:

一行代码:

s = ('667000', '0', '0', '', '')
npar = np.array(tuple([0 if dt.names[x]== 'd' else 1 if dt.names[x]=='e' else s[x] for x in range(0,len(s))]),dt)

或者:

import numpy as np
dt = np.dtype([ ('a', np.int32,),
('b', np.float32),
('c', np.int32,),
('d', np.float32),
('e', np.int32,),
])
s = ('667000', '0', '0', '', '')
t = np.array(s)
if not t[4]:
t[4] = 1
t[t==''] = 0
npar = np.array(tuple(t),dt)

关于python - numpy array 指定一个默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com