import numpy as np
位运算相关的函数
a = np.random.randint(5, 50, size=8)
# array([15, 47, 14, 8, 7, 32, 38, 7])
#按位与 &
np.bitwise_and(a,7)
# array([7, 7, 6, 0, 7, 0, 6, 7], dtype=int32)
# 就是把a里的每一个数字转成二进制的形式 再与7的二进制形式作比较 相同则取
# 比如用第一个数字15和7 作比较 15的二进制是 0000 1111
# 7的二进制是 0000 0111
# 得出结果就是 0000 0111 再转换成十进制就是7
# 以此类推 后面都是这样比较
# 按位或|
np.bitwise_or(a,7)
# array([15, 47, 15, 15, 7, 39, 39, 7], dtype=int32)
# 也是转成二进制的形式作比较 有1就取
#比如 第一个 0000 1111
# 0000 0111
# 取出的结果是 0000 1111 只要有1 就取再转成十进制 结果是 15
# 按位异或 ^
np.bitwise_xor(a, 7)
#array([ 8, 40, 9, 15, 0, 39, 33, 0], dtype=int32)
# 也是先转成二进制的形式
# 相同不取 不同则取 (这里取的意思都是取1)
# 相同取0 不同取1
# 0000 1111
# 0000 0111
# 0000 1000 结果是8
# 按位取反 ~
np.bitwise_not(a)
# array([-16, -48, -15, -9, -8, -33, -39, -8], dtype=int32)
# 结果就是 -(a + 0000 0001) a转成二进制的形式 再加一 结果变成负号
# 0000 1111 + 0000 0001
# --> 0001 0000 但是最后要变成负号 就是 -16
#左移 <<
np.left_shift(a, 2)
# array([ 60, 188, 56, 32, 28, 128, 152, 28], dtype=int32)
# 左移N位 等价于 a * 2^N
# 把十进制数字转成二进制 再往左偏移 两个单位
# 0000 1111 --> 0011 1100 结果是60
# 右移 >>
np.right_shift(a, 2)
# array([ 3, 11, 3, 2, 1, 8, 9, 1], dtype=int32)
# 和左移的意思一样 就是向右移两位 最小值是0
算术运算
a = np.random.randint(2,50, size=8)
b = np.random.randint(2,50, size=8)
# a = [22 44 17 17 34 14 20 43]
# b = [ 2 47 36 6 4 35 35 29]
np.add(a,b) #做加法运算
# array([67, 79, 72, 46, 44, 66, 65, 56])
np.divide(a,b) # 做除法运算
#array([1.68 , 1.32352941, 1.48275862, 0.39393939, 0.57142857,
#1.86956522, 0.47727273, 2.11111111])
np.multiply(a,b) # 做乘法运算
# array([1050, 1530, 1247, 429, 448, 989, 924, 684])
# np.subtract(a,b) # 做减法运算
#array([ 17, 11, 14, -20, -12, 20, -23, 20])
np.power(a,b) # 做幂次方运算
#array([ 1778384896, -1096480663, -1779601381, 1676836493, #0,
# 789926883, -2040401007, -1767636992], dtype=int32)
np.mod(a,b) # 取余
np.remainder(a,b) # 取余
np.reciprocal(a,b) # 取倒数
# (因为自己又运行了一边 数字改了 加上人懒
# 就不重新放上面了 感兴趣的可以自己瞅一瞅)
数学相关的方法
a = np.random.randint(1, 10, size=5)
# array([7, 4, 4, 8, 5])
np.pi / a 用 pi --> 3.14 除以 a
#array([0.44879895, 0.78539816, 0.78539816, 0.39269908, 0.62831853])
np.sin(x) #正弦(xian(二声))
#array([0.43388374, 0.70710678, 0.70710678, 0.38268343, 0.58778525])
np.cos(x) # 余弦
#array([0.90096887, 0.70710678, 0.70710678, 0.92387953, 0.80901699])
np.tan(x) # 正切
#array([0.48157462, 1. , 1. , 0.41421356, 0.72654253])
a = np.random.randn(10)
#array([-0.09812288, 1.12658467, -0.42985643, -0.37230381, #-1.18993383,
# -0.73424279, -0.56587047, -1.19870008, -0.97423602, -0.96879218])
np.ceil(a) # 向上取整
#array([-0., 2., -0., -0., -1., -0., -0., -1., -0., -0.])
np.floor(a) # 向下取整
#array([-1., 1., -1., -1., -2., -1., -1., -2., -1., -1.])