NumPy_2021.07.05
发布于: 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]=10
print(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))
复制代码
划线
评论
复制
发布于: 3 小时前阅读数: 2
Flychen
关注
日拱一卒,做好每件小事。 2020.02.21 加入
还未添加个人简介
评论