039、choose 函数实现条件筛选
本文最后更新于 67 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

choose 函数实现条件筛选

对于数组,我们有时候需要进行类似 switchcase 进行条件选择,此时使用 choose 函数十分方便:

import numpy as np
control = np.array([[1,0,1],
                    [2,1,0],
                    [1,2,2]])

np.choose(control, [10, 11, 12])
array([[11, 10, 11],
       [12, 11, 10],
       [11, 12, 12]])

在上面的例子中,choose0,1,2 对应的值映射为了 10, 11, 12,这里的 0,1,2 表示对应的下标。

事实上, choose 不仅仅能接受下标参数,还可以接受下标所在的位置:

i0 = np.array([[0,1,2],
               [3,4,5],
               [6,7,8]])
i2 = np.array([[20,21,22],
               [23,24,25],
               [26,27,28]])
control = np.array([[1,0,1],
                    [2,1,0],
                    [1,2,2]])

np.choose(control, [i0, 10, i2])
array([[10,  1, 10],
       [23, 10,  5],
       [10, 27, 28]])

这里,control 传入第一个 1 对应的是 10,传入的第一个 0 对应于 i0 相应位置的值即 1,剩下的以此类推。

下面的例子将数组中所有小于 10 的值变成了 10

a = np.array([[ 0, 1, 2], 
              [10,11,12], 
              [20,21,22]])

a < 10
array([[ True,  True,  True],
       [False, False, False],
       [False, False, False]], dtype=bool)
np.choose(a < 10, (a, 10))
array([[10, 10, 10],
       [10, 11, 12],
       [20, 21, 22]])

下面的例子将数组中所有小于 10 的值变成了 10,大于 15 的值变成了 15。

a = np.array([[ 0, 1, 2], 
              [10,11,12], 
              [20,21,22]])

lt = a < 10
gt = a > 15

choice = lt + 2 * gt
choice
array([[1, 1, 1],
       [0, 0, 0],
       [2, 2, 2]])
np.choose(choice, (a, 10, 15))
array([[10, 10, 10],
       [10, 11, 12],
       [15, 15, 15]])
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇