np.where(三元运算符)

使用上一节用到的 stock_change。现在想要判断前四个股票前四天的涨跌幅 大于0的置为1,否则为0

temp = stock_change[:4, :4]

np.where(temp > 0, 1, 0)

输出一下

array([[1, 1, 0, 1],
       [0, 1, 1, 1],
       [0, 1, 1, 1],
       [0, 1, 0, 1]])

还可以这样

np.where([[True, False, True, True],
          [True, True, True, True],
          [False, False, True, False],
          [True, False, True, False]], 1, 0)

输出一下

array([[1, 0, 1, 1],
       [1, 1, 1, 1],
       [0, 0, 1, 0],
       [1, 0, 1, 0]])

# 判断前四个股票前四天的涨跌幅 大于0.5并且小于1.5的,换为1,否则为0
# 判断前四个股票前四天的涨跌幅 大于0.5或者小于-0.5的,换为1,否则为0
# (temp > 0.5) and (temp < 1)
np.logical_and(temp > 0.5, temp < 1.5)

输出结果

array([[ True,  True, False,  True],
       [False, False,  True,  True],
       [False,  True,  True,  True],
       [False, False, False,  True]])

使用三元运算符实现

np.where(np.logical_and(temp > 0.5, temp < 1.5), 1, 0)
array([[1, 1, 0, 1],
       [0, 0, 1, 1],
       [0, 1, 1, 1],
       [0, 0, 0, 1]])

不一定只能1或者0

np.where(np.logical_or(temp > 0.5, temp < -0.5), 11, 3)
array([[11, 11,  3, 11],
       [11,  3, 11, 11],
       [ 3, 11, 11, 11],
       [11,  3,  3, 11]])

Last updated