numpy用法
numpy实例
1、数组
import numpy as np
q1=[1,2,3] q2=[2,3,4]
array1=np.array([q1,q2]) #生成二维数组
array1.shape #数组维度,输出 (2, 3)
array1.size #元素个数,输出 6
array1.dtype #数组类型,输出 dtype('int32')
np.zeros(5) #输出全0数组 array([ 0., 0., 0., 0., 0.])
np.zeros([2,3]) 输出 array([[ 0., 0., 0.], [ 0., 0., 0.]])
np.eye(4) #单位矩阵,输出 array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
np.arange(1,10) 输出 array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.random.randn(10) 生成随机数组
输出 rray([-1.082794 , 0.9338296 , 2.31105355, 0.38085937, -0.07724744,-0.13239828, -0.40933282, 2.28515491, -0.32226857, 0.39435417])
np.random.randint(10,size=[2,3]) 生成随机二维数组
输出 array([[2, 4, 5],[4, 6, 0]])
np.random.randint(10,size=20).reshape(4,5) #生成随机数*4乘5的数组
输出 array([[7, 8, 6, 7, 7],[2, 7, 0, 5, 9],[5, 8, 0, 2, 8],[8, 9, 4, 5, 1]])
(2)运算
a=array([[7, 8, 6, 7, 7],[2, 7, 0, 5, 9],[5, 8, 0, 2, 8],[8, 9, 4, 5, 1]])
sum(a) 求总列的和
sum(a[0]) 求第0行的和
sum(a[:0]) 求第0列的和
a.max() 求最大值
2、矩阵
import numpy as np
np.mat([[1,2,3],[1,2,3]]) 输出 matrix([[1, 2, 3],[1, 2, 3]])
行转列
t=np.array([1,2,0])
t[:,np.newaxis]
拼接数组使用:np.concatenate、np.vstack、np.hstack
1、np.concatenate 横向拼接
In[43]: x = np.array([1, 2, 3])
y = np.array([3, 2, 1])
np.concatenate([x, y])
Out[43]: array([1, 2, 3, 3, 2, 1])
2、沿着固定维度处理数组时,使用 np.vstack(垂直栈)和np.hstack(水平栈)
In[48]: x = np.array([1, 2, 3])
grid = np.array([[9, 8, 7],[6, 5, 4]])
# 垂直栈数组
np.vstack([x, grid])
Out[48]: array([[1, 2, 3],[9, 8, 7],[6, 5, 4]])
In[49]: # 水平栈数组
y = np.array([[99],[99]])
np.hstack([grid, y])
Out[49]: array([[ 9, 8, 7, 99],[ 6, 5, 4, 99]])
拆分数组:np.split、np.hsplit、np.vsplit
1、np.split:横向拆分
In[50]: x = [1, 2, 3, 99, 99, 3, 2, 1]
x1, x2, x3 = np.split(x, [3, 5]) #通过传入索引位置实现拆分
print(x1, x2, x3)
[1 2 3] [99 99] [3 2 1]
2、np.hsplit 和 np.vsplit 的用法也类似:
np.sort(x) 排序
np.argsort(x) 返回排序的索引
np.partition(x, 3) 第三小的元素,放在最左边
np.argpartition