我有一个数字列表,我想根据几种情况用列表二进制模式替换每个数字。我有一个有效的代码来执行此操作,但是我想知道是否有一种更快,更有效的代码,因为如果我想添加更多条件。
谢谢
import numpy as np
n = []
z = np.linspace(0,5,8)
t = [3.8856, 4.1820, 2.3040, 1.0197, 0.4295, 1.5178, 0.3853, 4.2848, 4.30911, 3.2299, 1.8528, 0.6553, 3.3305, 4.1504, 1.8787]
for i in t:
if i>=z[0] and i<z[1]:
n.extend([0,0,0,0,0])
elif i>=z[1] and i<z[2]:
n.extend([0,0,0,0,1])
elif i>=z[2] and i<z[3]:
n.extend([0,0,0,1,0])
elif i>=z[3] and i<z[4]:
n.extend([0,0,0,1,1])
elif i>=z[4] and i<z[5]:
n.extend([0,0,1,0,0])
elif i>=z[5] and i<z[6]:
n.extend([0,0,1,0,1])
elif i>=z[6] and i<z[7]:
n.extend([0,0,1,1,0])
new_n = np.asarray(n).reshape(len(t),5) # new_n is the final pattern I want.
答案 0 :(得分:0)
在Python中,与Java切换情况不同,实际上没有一种冷凝方法。如果您真的想花一些时间,可以使用tutorial在Python中构建自己的开关盒。
否则,唯一可以实现的真正改进就是像z[0]<=i<z[1]
这样的压缩比较。