-- 综述
numpy主要用于进行运算
dataframe更切合于业务逻辑
-- numpy的创建, 传入多维数组或者使用routines函数创建
import numpy as np
test = np.array([[1,2,3],[4,5,6]])
-- routines函数创建
np.ones(shape, dtype=None, order='C') , np.ones([2,2])
np.full(shape,fill_value,dtype=None,order='C') ,np.full([3,3],3.14)
np.eye(N,M=None,k=0,dtype=float) ,np.eye(4,4,1) np.linspace(start,stop,num=50,endpoint=True,retstep=false,dtype=None) , np.linspace(0,10,5) 等差数列
np.arrang([start,]stop,[step,]dtype=None) , np.arange(0,10,2) 等差数列
# 常用的routines函数
np.random.seed(100)#随机的种子,有了种子,每次都一样
np.random.randint(low,high=None,size=None,dtype='l'), np.random.randint(0,10,size=(5,3))
np.random.rand(d0,d1,d2.....) , np.random.rand(10)
np.random.raondom(size=None) , np.random.random([2,2]) 产生一个0~1之间的np.ndarray
-- 索引,切片,变形同dataframe
-- 级联: np.concatenate() 级联需要注意的点:
级联的参数是列表:一定要加中括号
维度必须相同形状相符
【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向可通过axis参数改变级联的方向 ,z = np.concatenate([x,y])
-- numpy的矩阵操作
numpy与numpy之间只能形状相同的才能进行运算
numpy之间进行线性代数的矩阵积 np.dot(), 它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义即(m * p)*(p * n)
-- numpy的广播机制
【重要】ndarray广播机制的两条规则
规则一:为缺失的维度补1
规则二:假定缺失元素用已有值填充
例: a = np.arange(3).reshape((3,1))
a
输出:
array([[0],
[1],
[2]])
b = np.arange(3)
b
输出:
array([0, 1, 2])
a+b
输出:
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]])
-- numpy的排序
np.sort()与ndarray.sort()都可以,但有区别:
np.sort()不改变输入
ndarray.sort()本地处理,不占用空间,但改变输入
-- numpy的部门排序
np.partition(a,k)
有的时候我们不是对全部数据感兴趣,我们可能只对最小或最大的一部分感兴趣。
当k为正时,我们想要得到最小的k个数
当k为负时,我们想要得到最大的k个数
例: import numpy as np
a = np.random.randint(0,100,10)
print(a)
print(np.partition(a,3))
输出:
[67 0 63 42 30 82 28 63 95 13]
[ 0 13 28 30 42 82 63 63 95 67]