2.3 numpy字符串操作
import numpy as np
str_list = ['Hello', 'World']
str_arr = np.char.upper(str_list)
a = np.char.add(['中国', '国庆'], ['海军', '大阅兵'])
b = np.char.multiply(['中国', '万岁'], 3)
c = np.char.join([':', '-'], ['hello', 'world'])
d = ['我想学习一下python', '好好学一下java']
np.char.replace(d, '学习一下', '深入学习')
# strip只能去掉头和尾
e = ['-电动汽车\n', '海洋科技-', '-学习Python\n']
np.char.strip(e, '-')
np.char.rstrip(e, '\n')
f = ['hello,world!互联网金融.123456789']
np.char.find(f, '互联网金融')
g = ['hello,world', '互联网金融', '金融互联网', 123]
np.char.islower(g)
np.char.isdigit(g)
np.char.isalpha(g)
np.char.count(g, '金融')
np.char.startswith(g, '金融')
np.char.endswith(g, '金融')
2.4 numpy统计计算
(1)随机数生成
import numpy as np
# 产生0-1之间的随机浮点数
np.random.random(100) # 产生100个
np.random.random([3, 4]) # 产生3行4列个
np.random.seed(100)
np.random.random([3, 4])
a = np.random.rand(10, 10) # 产生0-1均匀分布的随机数
np.random.randint(0, 100, size=100) # 产生0-100之间的100个随机整数
np.random.randint(0, 100, size=(10, 10)) # 产生0-100之间的10行10列个随机整数
np.random.uniform(low=0, high=10, size=100) # 产生给定范围内的均匀分布的随机数(包括小数)
np.set_printoptions(precision=2) # 控制小数位数
np.random.uniform(low=0, high=10, size=100)
np.random.normal(1, 3, size=100) # 产生均值为1,标准差为3的随机数
np.mean(np.random.normal(1, 3, size=10000))
np.std(np.random.normal(1, 3, size=10000))
np.random.randn(100) # 产生100个标准正态分布的随机数
np.random.randn(10, 100) # 产生10行100列个标准正态分布的随机数
s = np.array([1, 2, 3, 5, 9, 10])
np.random.shuffle(s) # s发生改变
np.random.permutation(s) # s本身不发生改变
(2)统计相关函数
import numpy as np
data = np.array([[1, 2, 3], [5, 9, 10], [7, 8, 9]])
# 求和求平均
data.sum()
data.sum(axis=0)
data.mean()
data.mean(axis=1)
# 累计求和
data.cumsum()
# 累计乘积
data.cumprod()
data.max(axis=0)
# 计算分位数(50就是中位数)
np.percentile(data, 10)
np.percentile(data, [10, 20, 30, 40, 50, 60])
# 其他
a = np.ptp(data) # =data.max()-data.min()
b = np.sum(data > 3)
2.5 numpy线性代数
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
vector = np.dot(a, b)
arr1 = np.array([5, 15, 25, 40]).reshape(4, 1)
arr2 = np.arange(12).reshape(3, 4)
arr2d = np.dot(arr2, arr1)
data = ((1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12), (13, 14, 15, 16))
arr3 = np.array(data)
# 转置
np.transpose(arr3)
# 求逆
try:
arr3_inv = np.linalg.inv(arr3)
print(arr3_inv)
except:
print("矩阵不存在逆矩阵")
np.set_printoptions(suppress=True) # 取消科学计数法
# 取出对角线元素
np.diag(arr3)
# 多元一次方程组求解
# 3x + 2y + z = 38
# 2x + 3y + z = 34
# x + 2y + 3z = 26
A = np.array([[3, 2, 1], [2, 3, 1], [1, 2, 3]])
b = np.array([[38], [34], [26]])
X = np.linalg.solve(A, b)