python-numpy

numpy是C实现的

blas+lapack、intel MKL、OpenBlas、ATLAS

numpy底层使用BLAS做向量,矩阵运算

NumPy doesn’t depend on any other Python packages, however, it does depend on an accelerated linear algebra library - typically Intel MKL or OpenBLAS.

blas vs openblas

下面安装的是 openblas,这个大小要比 blas 小很多。不过速度可能会慢些

conda install -c conda-forge numpy

行,列数

import numpy as np
num = np.zeros([2, 3])
[rows, cols] = num.shape
print(rows, cols)

# row
z.shape[0]
# column
z.shape[1]

取数值

import numpy as np

np.random.seed(2019)
nd1 = np.random.random([10])
#获取指定位置的数据, 获取第4个元素
nd1[3]
#截取一段数据
nd1[3:6]
#截取固定间隔数据
nd1[1:6:2]
#倒序取数
nd1[::-2]
#截取一个多维数组的一个区域内数据
nd2=np.arange(25).reshape([5,5])
nd2[1:3,1:3]
#截取一个多维数组中, 数值在一个值域之内的数据
nd2[(nd2>3)&(nd2<10)]
#截取多维数组中, 指定的行,如读取第2,3行
nd2[[1,2]] #或nd12[1:3,:]
##截取多维数组中, 指定的列,如读取第2,3列
nd2[:,1:3]

获取一列

df_adjust[:,0]

生成数据

# 用于创建一个一维数组,并且是等差数列构成的一维数组,它最常用的有三个参数  
# 第一个参数表示起始点,第二个参数表示终止点,第三个参数表示数列的个数,默认包括 终止值
a = np.linspace(1,10,10)
# 输出 array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) dtype('float64')

# 可以使用参数endpoint来决定是否包含终止值,默认是True
a = np.linspace(1,10,10,endpoint=False)

保存数据

np.savetxt("data.csv", y_20, delimiter=",")

曲线拟合

import numpy as np

x = np.linspace(0, 10, 50)
y = x**2 + 5 * x + 10

print(np.polyfit(x, y, 2))
print(np.polynomial.polynomial.polyfit(x, y, 2))

[ 1. 5. 10.]
[10. 5. 1.]

print(np.polynomial.polynomial.Polynomial(np.polynomial.polynomial.polyfit(x, y, 2)))
print(np.polynomial.polynomial.Polynomial(np.polyfit(x, y, 2)))

print(np.poly1d(np.polyfit(x, y, 2)))

文档推荐新代码使用这个接口,注意这个接口返回的顺序和 polyfit 是反的
print(np.poly1d(np.polynomial.polynomial.polyfit(x, y, 2)))

np.polynomial.polynomial.Polynomial