我有numpy数组agent
,其中包含'y'或'n'。我想用1替换'y',用0替换'n',并且在其他地方出现,我想要分配-1。我写的剧本是
agent[agent=='y']=1
agent[agent=='n']=0
agent[(agent!='y') and (agent!='n')]=-1
agent=agent.astype(int)
它给出了错误“具有多个元素的数组的真值是不明确的。使用a.any()或a.all()” 我知道我可以使用循环,但我希望以尽可能简单的方式在一行中完成此操作
答案 0 :(得分:3)
为什么不首先创建一个-1的数组,然后根据代理
填充1和0result = np.ones_like(agent, dtype=np.int) *-1
result [agent == 'y'] = 1
result [agent == 'n'] = 0
答案 1 :(得分:2)
首先,考虑到你的作业顺序,如果它有效,你的整个数组都会被-1
填充。
话虽如此,你可以这样做:
agent[(agent != 0) & (agent != 1)] = -1
您还可以考虑使用masked array。
答案 2 :(得分:0)
我建议创建一个转换函数f,它为'n'返回0,为'y'返回1,否则返回-1。 然后我会这样做: desired_array = [代理中的单元格的f(单元格)]