利用数组进行数据统计
1.1将条件逻辑表现为数组运算
np.where(cond, xarr, yarr)函数,其中,cond为条件,符合条件输出xarr,不符合条件输出yarr
xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
cond = np.array([True, False, True, True, False])
# 列表推导式,运行速度较慢且编写复杂
import time
result = [(x if c else y)
for x, y, c in zip(xarr, yarr, cond)]
print(result)
# np.where函数
result = np.where(cond, xarr, yarr)
print(result)
其中,第二和第三个参数可以不为数组,可以为标量值,例:
arr = np.random.randn(4, 4)
np.where(arr > 0, 2, -2)
输出结果为:
1.2数学和统计方法
其中,cumsum()函数和cumprod()函数会统计中间结果,产生一个由中间结果组成的数组。例:
1.3用于布尔型数组的方法
1.3.1布尔值的转换与统计
在以上方法中,布尔值会被转换成1(True)或者0(False)。例:
1.3.2布尔型数组的两个使用方法,any和all
any用于判断是否存在True,all用于判断是否每一个元素都是True。
例:紧接上文数据,做出如下判断
1.4排序
使用sort()方法排序,其中可以对任何一个轴进行排序。
例:
1.5唯一化以及其他的集合逻辑
例1:
例2:
1.6线性代数
1.6.1矩阵乘法的dot函数
1.6.2numpy.linalg模块
常用的linalg函数
描述性统计
2.1中心位置(均值、中位数、众数)
2.2发散程度(极差、方差、标准差、变异系数)
NumPy读写文件
3.1二进制的文件读写
3.1.1np.save()函数
import numpy as np #导入NumPy库
arr = np.arange(100).reshape(10,10) #创建一个数组
np.save("e:/save_arr",arr) #保存数组,自动默认文件后缀为.npy
3.1.2np.load()函数
x = np.load("e:/save_arr.npy")
#读取含有单个数组的文件,文件名必须加后缀
3.1.3np.savez()函数
将多个数组保存在一个文件
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.arange(0,1.0,0.1)
np.savez('e:/savez_arr',arr1,arr2)
print('保存的数组1为:\n',arr1)
print('保存的数组2为:\n',arr2)
3.2读写文本格式的数据
3.2.1np.savetxt()函数
将数组写到某种分隔符隔开的文本文件中
3.2.2np.loadtxt()函数
把文件加载到一个二维数组中
3.2.3np.genfromtxt()函数
面向结构化数组和缺失数据