numpy的通用函数

数组的裁剪与压缩

# 数组的裁剪
ndarray.clip(min=下限, max=上限)
# 数组的压缩
ndarray.compress(条件)
a = np.arange(1, 10)
# 数组裁剪: 最小值不小于下限, 最大值不大于上限
print(a.clip(min=3, max=6))
print(a.compress(a>=6))

加法通用函数

np.add(a, a)		# 求两数组之和
np.add.reduce(a)	# 求a数组元素的累加和
np.add.accumulate(a)	# 返回a数组累加和的过程
np.add.outer([10, 20, 30], a) # 外和

案例:

print('-' * 45)
a = a.reshape(3, 3)
b = a[::]
print(np.add(a, b))
a = a.ravel()
print(a)
print(np.add.reduce(a))  # 求a元素的累加和
print(np.add.accumulate(a)) # a累加和的过程
print(np.add.outer([10,20], a)) # 外和

乘除法通用函数

# 返回ndarray数组元素的累乘结果
ndarray.prod()
# 返回ndarray数组元素累乘的过程
ndarray.cumprod()
# a数组 / b数组
np.true_divide(a,b)    np.divide(a,b)
# 地板除
np.floor_divide(a, b)
np.ceil(a / b)   # 天花板取整
np.round(a / b)  # 四舍五入
np.trunc(a / b)  # 截断取整

位运算通用函数

位异或:

c = a ^ b
c = np.bitwise_xor(a, b)

按位异或操作可以方便的判断两个数据是否同号.

7   0111
6   0110
5   0101
4   0100
3   0011
2   0010
1   0001
0   0000
-1  1111
-2  1110
-3  1101
-4  1100
-5  1011
-6  1010
-7  1001
-8  1000
print('-' * 45)
print(a)
print(b)
print(a^b < 0)   # 判断是否异号
print(np.bitwise_xor(a,b) < 0)   # 判断是否异号

位与:

e = a & b
e = np.bitwise_and(a, b)

利用位与运算计算某个数字是否是2的幂.

1   2^0   00001        0   00000
2   2^1   00010        1   00001
4   2^2   00100        3   00011
8   2^3   01000        7   00111
16  2^4   10000       15   01111
....

案例:

print('-' * 45)
for i in range(1000):
	if i & (i-1) == 0:
		print(i, end=' ')

a = np.arange(1, 1000)
print(a[a&(a-1) == 0])

其他位运算通用函数

np.bitwise_or(a, b)		# 或运算
np.bitwise_not(a)       # 非
np.left_shift(a, 1)     # 左移
np.right_shift(a, 1)    # 右移

三角函数通用函数

np.sin(a)
np.cos(a)
....

你可能感兴趣的:(numpy,python)