根据几种情况,将列表中的项目替换为另一个项目(小列表)

时间:2019-03-12 00:10:34

标签: python python-3.x numpy foreach linspace

我有一个数字列表,我想根据几种情况用列表二进制模式替换每个数字。我有一个有效的代码来执行此操作,但是我想知道是否有一种更快,更有效的代码,因为如果我想添加更多条件。

谢谢

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.

1 个答案:

答案 0 :(得分:0)

在Python中,与Java切换情况不同,实际上没有一种冷凝方法。如果您真的想花一些时间,可以使用tutorial在Python中构建自己的开关盒。

否则,唯一可以实现的真正改进就是像z[0]<=i<z[1]这样的压缩比较。