我爱编程

Numpy基础(二)

2017-02-24  本文已影响53人  盗花

choose函数实现条件筛选

choose函数主要利用下标以及下标所在的位置对相关的数组进行筛选,看下面的示例:

In [129]: control
Out[129]: 
array([[1, 0, 1],
       [2, 1, 0],
       [1, 2, 2]])

In [130]: choose(control, [10, 11, 12]) # control中,1对应11,0对弈10,2对应12
Out[130]: 
array([[11, 10, 11],
       [12, 11, 10],
       [11, 12, 12]])
--------------------------------------------------------
In [131]: i0
Out[131]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [132]: i2
Out[132]: 
array([[20, 21, 22],
       [23, 24, 25],
       [26, 27, 28]])

In [133]: choose(control, [i0, 10, i2]) # control中,第一个元素1对应10,第二个元素[0, 1]0对应i0中的[0, 1]1,以此类推。
Out[133]: 
array([[10,  1, 10],
       [23, 10,  5],
       [10, 27, 28]])
------------------------------------------------------------
In [135]: a = array([[0, 1, 2], [10, 11, 12], [20, 21, 22]])

In [136]: a
Out[136]: 
array([[ 0,  1,  2],
       [10, 11, 12],
       [20, 21, 22]])

In [137]: a < 10
Out[137]: 
array([[ True,  True,  True],
       [False, False, False],
       [False, False, False]], dtype=bool)

In [138]: choose(a < 10, [a, 10]) # True可以看成是1,对应10;False看成0,对应a中相同位置的元素。
Out[138]: 
array([[10, 10, 10],
       [10, 11, 12],
       [20, 21, 22]])
------------------------------------------------------------
# 下面的例子将数组中所有小于10的值变成了10, 大于15的值变成了15.
In [139]: a
Out[139]: 
array([[ 0,  1,  2],
       [10, 11, 12],
       [20, 21, 22]])

In [140]: a < 10
Out[140]: 
array([[ True,  True,  True],
       [False, False, False],
       [False, False, False]], dtype=bool)

In [141]: a > 15
Out[141]: 
array([[False, False, False],
       [False, False, False],
       [ True,  True,  True]], dtype=bool)

In [142]: lt = a < 10

In [143]: a > 15
Out[143]: 
array([[False, False, False],
       [False, False, False],
       [ True,  True,  True]], dtype=bool)

In [144]: gt = a > 15

In [145]: gt
Out[145]: 
array([[False, False, False],
       [False, False, False],
       [ True,  True,  True]], dtype=bool)

In [146]: 2 * gt
Out[146]: 
array([[0, 0, 0],
       [0, 0, 0],
       [2, 2, 2]])

In [147]: gt * 2
Out[147]: 
array([[0, 0, 0],
       [0, 0, 0],
       [2, 2, 2]])

In [148]: a
Out[148]: 
array([[ 0,  1,  2],
       [10, 11, 12],
       [20, 21, 22]])

In [149]: lt = a < 10

In [150]: lt
Out[150]: 
array([[ True,  True,  True],
       [False, False, False],
       [False, False, False]], dtype=bool)

In [151]: gt = a > 15

In [152]: gt
Out[152]: 
array([[False, False, False],
       [False, False, False],
       [ True,  True,  True]], dtype=bool)

In [153]: choice = lt + 2 * gt

In [154]: choice
Out[154]: 
array([[1, 1, 1],
       [0, 0, 0],
       [2, 2, 2]])

In [155]: choose(choice, [a, 10, 15])
Out[155]: 
array([[10, 10, 10],
       [10, 11, 12],
       [15, 15, 15]])
上一篇下一篇

猜你喜欢

热点阅读