In [187]: ones = eye(3, dtype=int) # 生成3 * 3的单位矩阵
In [188]: ones
Out[188]:
array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
In [226]: zeros((2, 3), dtype=int) # 生成2 * 3的零矩阵
Out[226]:
array([[0, 0, 0],
[0, 0, 0]])
In [197]: savetxt('ones.txt', ones) # 保存到当前路径下的ones.txt文件中
# 读取csv文件,设置分隔符`,`,获取第7至第8子段的数据,unpack为True表明不同列的数据分开存储
In [201]: c, v = loadtxt('data.csv', delimiter=',', usecols=(6, 7), unpack=True)
In [201]: a
Out[201]: array([1, 2, 3, 4, 5])
# average函数计算数组的平均值,此函数还有axis,weights,returned等参数可选
In [202]: average(a)
Out[202]: 3.0
# mean函数功能同average,此函数还有axis, dtype, out, keepdims等参数可选
In [220]: mean(a)
Out[220]: 3.0
# 求最小值函数
In [246]: min(a)
Out[246]: 1
# 求最大值函数
In [247]: max(a)
Out[247]: 5
# 求数组的取值范围,等于max(array) - min(array)
In [248]: ptp(a)
Out[248]: 4
# 求数组中位数
In [249]: median(a)
Out[249]: 3.0
# msort返回排序后的数组
In [253]: msort(d)
Out[253]: array([1, 2, 4, 6, 7])
# var返回数组的方差
In [257]: var(a)
Out[257]: 2.0
# std返回数组的标准差
In [261]: std(a)
Out[261]: 1.4142135623730951
# diff返回数组相邻两个元素差值
In [258]: diff(a)
Out[258]: array([1, 1, 1, 1])
# where返回所有满足指定条件的元素
In [269]: where(a > 3)
Out[269]: (array([3, 4]),)
# all返回True,如果数组元素都满足条件的话,否则返回False
In [270]: all(a > 3)
Out[270]: False
# any返回True,如果数组元素有满足条件的话,在数组元素都不满足条件时返回False
In [271]: any(a > 3)
Out[271]: True
# take返回给定下标的元素
In [279]: take(a, [0, 2, 4])
Out[279]: array([1, 3, 5])
# argmax返回给定数组最大元素的下标
In [280]: argmax(a)
Out[280]: 4
# argmin返回给定数组最小元素的下标
In [282]: argmin(a)
Out[282]: 0
# maximum返回比较的两个数组中对应位置元素最大的元素,并组成一个数组
# 如果还有第三个参数,则第三个参数接受结果数组
In [312]: a = array([8, 7, 6, 5, 4])
In [313]: b = array([4, 5, 6, 7, 8])
In [316]: maximum(a, b)
Out[316]: array([8, 7, 6, 7, 8])
# 同maximum,minimum返回两个数组中对应位置元素较小的元素,并组成一个数组
In [357]: minimum(a, b)
Out[357]: array([4, 5, 6, 5, 4])
# log返回数组中所有元素`e`的对数
In [262]: log(a)
Out[262]: array([ 0. , 0.69314718, 1.09861229, 1.38629436, 1.60943791])
# sqrt返回数组元素的平方根
In [272]: sqrt(a)
Out[272]: array([ 1. , 1.41421356, 1.73205081, 2. , 2.23606798])
# sum返回数组中所有元素总和
In [386]: sum(a) # 还可以a.sum()
Out[386]: 10
# exp返回数组每个元素的e指数
In [383]: exp(a)
Out[383]: array([ 1. , 2.71828183, 7.3890561 , 20.08553692, 54.59815003])
# convolve返回两个一维数组data和w的线性卷积
# 卷积的概念不太好理解,不过一维数组的卷积可以理解成两个多项式乘积
In [370]: convolve(data, w)
# zeros_like返回a shape的数组,数组元素都为0
In [20]: zeros_like(a)
Out[20]: array([0, 0, 0, 0, 0])
# empty_like返回a shape的数组,数组未初始化
In [21]: empty_like(a)
Out[21]: array([0, 0, 0, 0, 0])
# clip(a, b)将a中所有小于a的元素都设为a,所有大于b的元素设为b
In [419]: a.clip(1, 2) # array([0, 1, 2, 3, 4])
Out[419]: array([1, 1, 2, 2, 2])
# compress返回一个根据指定条件筛选后的数组
In [428]: a.compress(a > 2)
Out[428]: array([3, 4])
# prod方法返回a数组中所有元素的乘积
In [433]: a.prod()
# cumprod方法返回a数组所有元素累计乘积数组
In [435]: a.cumprod()
Out[435]: array([ 1, 2, 6, 24, 120])
# cumsum方法返回a数组所有元素累计和数组
In [436]: a.cumsum()
Out[436]: array([ 1, 3, 6, 10, 15])
# 返回给定矩阵的协方差矩阵,为对称矩阵
# 第一个元素为a和a的协方差,最后一个元素为b和b的协方差,两边元素为a和b的协方差
In [440]: cov(a, b)
Out[440]:
array([[ 2.5, 1. ],
[ 1. , 0.7]])
# 返回b和c的相关系数矩阵
In [458]: corrcoef(b, c)
# diagonal方法返回a的对角线上的元素
In [452]: a.diagonal() # a = array([[0, 1], [2, 3]])
Out[452]: array([0, 3])
# trace方法返回a的迹
In [453]: a.trace()
Out[453]: 3
# isreal能够判断元素或者数组元素是否为实数
In [21]: isreal(al)
Out[21]: array([ True, True, True, True, True], dtype=bool)
# 用三次多项式去拟合x和y的变化关系
In [461]: np.polyfit(x, y, 3)
Out[461]: array([ 0.08703704, -0.81349206, 1.69312169, -0.03968254])
# 预测下一个值
In [464]: polyval(z, 0.5)
Out[464]: 0.61438492063492223
# 也可以这样预测
In [467]: poly1d(z)(0.5)
Out[467]: 0.61438492063492223
# roots函数可以找到函数0值的解
In [469]: roots(z)
Out[469]: array([ 6.24151464, 3.08128307, 0.02370685])
# ployder函数可以对多项式函数求导
In [472]: polyder(z)
Out[472]: array([ 0.26111111, -1.62698413, 1.69312169])
# polysub可以对多项式作差
In [18]: polysub(al, bl) # al = bl = [0, 1, 2, 3, 4]
Out[18]: array([0, 0, 0, 0, 0])
linalg模块内容比较多,会在之后的笔记中记录。
# linalg.lstsq返回A*x=b方程的解x,残差数组,A的秩,A的奇异值
In [408]: (x, residuals, rank, s) = linalg.lstsq(A, b)
# dot返回向量a,b的点积
In [411]: dot(a, b)
# sign函数可以返回数组中每个元素的正负符号,数组元素为负时返回-1,为正时返回1,否则返回0
In [478]: sign(c)
Out[478]: array([-1, -1, 0, 1, 1])
# 也可以使用piecewise来获取元素的正负。
In [480]: piecewise(c, [c < 0, c > 0], [-1, 1])
Out[480]: array([-1, -1, 0, 1, 1])
# array_equal可以比较两个数组元素是否相同
In [492]: array_equal(b, c)
Out[492]: True
# vectorize相当于Python中map函数,结合给定的函数,和参数进行计算
In [4]: def addfunc(a, b):
...: return a + b
...:
In [5]: func = vectorize(addfunc)
In [6]: al = [0, 1, 2, 3, 4]
In [7]: bl = [0, 1, 2, 3, 4]
In [8]: func(al, bl)
Out[8]: array([0, 2, 4, 6, 8])
# hanning汉宁窗,计算权重,生成N的窗口
In [14]: hanning(N)
# 还有其他的平滑函数,如hamming,blackman,bartlett,kaiser
# select(condlist, choicelist, default=0),按照条件列表和对应的决策列表进行数组的判断运算
# x = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [4]: condlist = [x < 3, x > 5]
In [5]: choicelist = [x, x ** 2]
In [8]: select(condlist, choicelist, default=-1)
Out[8]: array([ 0, 1, 2, -1, -1, -1, 36, 49, 64, 81])
# trim_zeros将去除数组首尾的0元素
In [35]: trim_zeros(a) # a = array([0, 1, 2, 0, 4, 0, 0, 0])
Out[35]: array([1, 2, 0, 4])