文件读写
1.文件载入
loadtxt(fname, dtype=<type 'float'>, comments='#',
delimiter=None, converters=None, skiprows=0,
usecols=None, unpack=False, ndmin=0)
- 函数功能:将文本文件载入到内存中,并且要求文本文件中每一行含有相同数量的值,即一行文本字符串被分割符分割后的字符串数量相同。我的理解是这个函数其实是在将非结构化的文本数据转换为结构化的数据(数组),方便我们进行数组运算。
- 参数
- fname : file或str类型,必填,要载入的文件
- dtype : data-type类型,指定数组元素类型,默认float,如果想分别对一条记录(行)的每个字段(列)进行定义,示例如
dtype={'names':('name', 'age', 'weight'), 'formats':('S10', 'i', 'f')}
,含义参考 - comments : str类型,注释的开头符号
- delimiter : str类型,字段分隔符字符串,如delimiter=’,’
- converters : dict类型,对某列做函数式处理,如converters={0:datastr2num},则表示将第0列的字符串转为数值型
- skiprows : int型,指定跳过前多少行
- usecols : sequence类型,指定需要读取哪些列
- unpack : bool型,为True则表是分拆存储不同列的数据,如x, y, z = loadtxt(…)
- ndmin : int型,指定返回数组的最小维度,只能取0(默认)、1、2
- 返回:ndarray对象
2.文件写入
savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n',
header='', footer='', comments='# ')
- 函数功能:将数组存入文本
- 参数
- fname : file或str类型,必填
- X : 要存储的数组,必填
- fmt : str类型,数组元素的存储格式
- newline : str类型,换行符
- header : str类型,写在文本开头的字符串
- footer:str类型,卸载文本结尾的字符串
条件选择
1.where(condition, [x, y])
- 给定数组[x, y],满足条件元素从x中取,否则从y中取
>>> np.where([[True, False], [True, True]],
... [[1, 2], [3, 4]],
... [[9, 8], [7, 6]])
输出:array([[1, 8],
[3, 4]])
condition的shape必须与x,y保持一致,例子中的x即为数组[[1, 2], [3, 4]],y为数组[[9, 8], [7, 6]],在条件数组中(0,0)处条件为True,则输出的数组(0,0)处取x(0,0)即1;条件数组中(0,1)处条件为False,则输出的数组(0,1)处取y(0,1)即8。
- 数组[x, y]没有给定,返回索引元组
>>> x
array([[0, 1],
[2, 3],
[4, 5]])
>>> dices=np.where(x>2)
>>> dices
(array([1, 2, 2], dtype=int64), array([1, 0, 1], dtype=int64))
>>> x[dices]
array([3, 4, 5])
dices即数组x中大于2的元素的索引,array([1, 2, 2], dtype=int64)指定元素的第一个坐标,array([1, 0, 1], dtype=int64)指定元素的第二个坐标。
2.select(condlist, choicelist, default=0)
>>> x = np.arange(10)
>>> condlist = [x<3, x>5]
>>> choicelist = [x, x**2]
>>> np.select(condlist, choicelist)
array([ 0, 1, 2, 0, 0, 0, 36, 49, 64, 81])
x(0)=0满足x<3的条件,故返回数组的第一个元素即0,同理x(1)、x(2);对于x(3:6),由于两个条件均不满足,故返回默认值0;对于x(6),则返回x(6)的平方即36
多项式拟合
polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
- 参数
- x : 自变量数组,必填
- y : 因变量数组,必填
- deg : int型,拟合多项式的阶数
- rcond : float型,矩阵可逆的条件数
- full : bool型,False则只返回拟合系数,True则返回由奇异值分解得到的诊断信息
- w : array_like,抽取被用来拟合的y的权重
- cov:bool型,返回协方差矩阵
- 返回: 拟合系数数组(残差,系数矩阵的秩,奇异值,条件数)
>>> x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206, 1.69312169, -0.03968254])
相关的多项式函数
polyval() : 预测下一个值
polyder(): 多项式求导
root() : 求根