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]])