037、二元运算
本文最后更新于 67 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

二元运算

import numpy as np

四则运算

运算 函数
a + b add(a,b)
a - b subtract(a,b)
a * b multiply(a,b)
a / b divide(a,b)
a ** b power(a,b)
a % b remainder(a,b)

以乘法为例,数组与标量相乘,相当于数组的每个元素乘以这个标量:

a = np.array([1,2])
a * 3
array([3, 6])

数组逐元素相乘:

a = np.array([1,2])
b = np.array([3,4])
a * b
array([3, 8])

使用函数:

np.multiply(a, b)
array([3, 8])

事实上,函数还可以接受第三个参数,表示将结果存入第三个参数中:

np.multiply(a, b, a)
array([3, 8])
a
array([3, 8])

比较和逻辑运算

运算 函数<
== equal
!= not_equal
> greater
>= greater_equal
< less
<= less_equal
logical_and
logical_or
logical_xor
logical_not
& bitwise_and
bitwise_or
^ bitwise_xor
~ invert
>> right_shift
<< left_shift

等于操作也是逐元素比较的:

a = np.array([[1,2,3,4],
              [2,3,4,5]])
b = np.array([[1,2,5,4],
              [1,3,4,5]])
a == b
array([[ True,  True, False,  True],
       [False,  True,  True,  True]], dtype=bool)

这意味着,如果我们在条件中要判断两个数组是否一样时,不能直接使用

if a == b:

而要使用:

if all(a==b):

对于浮点数,由于存在精度问题,使用函数 allclose 会更好:

if allclose(a,b):

logical_and 也是逐元素的 and 操作:

a = np.array([0,1,2])
b = np.array([0,10,0])

np.logical_and(a, b)
array([False,  True, False], dtype=bool)

0 被认为是 False,非零则是 True

比特操作:

a = np.array([1,2,4,8])
b = np.array([16,32,64,128])

a | b
array([ 17,  34,  68, 136])

取反:

a = np.array([1,2,3,4], np.uint8)
~a
array([254, 253, 252, 251], dtype=uint8)

左移:

a << 3
array([ 8, 16, 24, 32], dtype=uint8)

要注意的是 & 的运算优先于比较运算如 > 等,所以必要时候需要加上括号:

a = np.array([1,2,4,8])
b = np.array([16,32,64,128])

(a > 3) & (b < 100)
array([False, False,  True, False], dtype=bool)
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


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