写点什么

NumPy_2021.07.05

用户头像
Flychen
关注
发布于: 3 小时前

使用 NumPy 让你的 Python 科学计算更高效


为什么要用 NumPy 数组结构而不是 Python 本身的列表 list?这是因为列表 list 的元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中。这样数组计算遍历所有的元素,不像列表 list 还需要对内存地址进行查找,从而节省了计算资源。


另外在内存访问模式中,缓存会直接把字节块从 RAM 加载到 CPU 寄存器中。因为数据连续的存储在内存中,NumPy 直接利用现代 CPU 的矢量化指令计算,加载寄存器中的多个连续浮点数。另外 NumPy 中的矩阵计算可以采用多线程的方式,充分利用多核 CPU 计算资源,大大提升了计算效率。



# 避免隐式拷贝,采用就地操作。
# ndarray 解决了多维数组问题
# ufunc 解决对数据进行处理的函数
print('--------------------1--------结构数组----------------------')
import numpy as np
a = np.array([1,2,3])b = np.array([[1,2,3],[4,5,6],[7,8,9]])

print(a.shape)print(b.shape)print(a.dtype,b.dtype)print(b)
b[1,1]=10print(b)
print('--------------------2--------结构数组----------------------')# 2、结构数组
persontype = np.dtype({ 'names':['name','age','chinese','math','english'], 'formats':['S32','i','i','i','f']})
people = np.array([ ('Zhangfei',32,75,100,90),('guanyu',24,45,57,56),('zhaoyun',28,84,54,85.4),('HuangZhong',29,65,87,100)],dtype=persontype)
ages = people[:]['age']print(ages)
chineses = people[:]['chinese']
print(np.mean(chineses)) #语文平均值
print('--------------------3--------ufunc运算----------------------')
x1 = np.arange(1,11,2) # 初始值、终值、步长print(x1)
x2 = np.linspace(1,9,5) # 初始值、终值、元素个数print(x2)
print('--------------------4 : 算术运算----------------------')
print(np.add(x1,x2)) # 加print(np.subtract(x1,x2)) #减print(np.multiply(x1,x2)) # 乘print(np.divide(x1,x2)) #除print(np.power(x1,x2)) # n次方print(np.remainder(x1,x2)) # 取余print(np.mod(x1,x2)) #取余
print('--------------------5:统计函数----------------------')
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.amin(a))print(np.amin(a,0)) # ?print(np.amin(a,1)) # ?
print(np.amax(a))print(np.amax(a,0)) # ?print(np.amax(a,1)) # ?

print('--------------------6:统计最大值最小值之差ptp()----------------------')
print(a)

print(np.ptp(a)) #
print(np.ptp(a,0))
print(np.ptp(a,1))
print('--------------------7:统计数组的百分位数 percentile()----------------------')
a = np.array([[1,2,3],[4,5,6],[7,8,9]])print(np.percentile(a,50))
print(np.percentile(a,50,axis=0))print(np.percentile(a,50,axis=1))
print('--------------------8:统计数组的中位数median()、平均数mean()----------------------')a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.median(a)) # 中位数print(np.median(a,axis=0))print(np.median(a,axis=1))
print(np.mean(a)) # 平均数
print('--------------------9:统计数组中的加权平均值 average()----------------------')
a = np.array([1,2,3,4])wst = np.array([1,2,3,4])
print(np.average(a))print(np.average(a,weights=wst)) # 权重
print('--------------------10:统计数组中的标准差 std(),方差 var()----------------------')
# 方差的计算是指每个数值与平均值之差的平方和的平均值# 标准差是方差的算术平方根a = np.array([1,2,3,4])print(np.std(a)) # 标准差print(np.var(a)) # 方差
print('--------------------11:NumPy 排序----------------------')
a = np.array([[4,3,2],[2,4,1]])print(a)print(np.sort(a))print(np.sort(a,axis=None))print(np.sort(a,axis=0)) # 凌乱print(np.sort(a,axis=1))
复制代码


用户头像

Flychen

关注

日拱一卒,做好每件小事。 2020.02.21 加入

还未添加个人简介

评论

发布
暂无评论
NumPy_2021.07.05