NumPy创建数组
-
NumPy数组创建
-
导入numpy模块
>>>import numpy as np
-
将整数列表转化为numpy数组
>>>a=np.array([1,2,3])
-
查看数组对象类型
>>>a.dtype
-
转换多维数组
>>>c=np.arry([[1,2,3],[4,5,6]])
-
生成全0或全1数组
>>>np.zeros((2,3)) >>>np.ones((3,4))
-
生成未初始化的随机数组
>>>np.empty([2,3])
-
用arange方法创建给定范围内数组
>>>np.arange(10,30,5) array([10,15,20,25])
-
-
numpy的random模块
-
生成3*2的符合(0,1)均匀分布的随机数数组
>>>np.random.rand(3,2)
-
生成一组符合标准正态分布的随机数数组
>>>np.random.randn(3)
-
生成0到2范围内长度为5的数组
>>>np.random.randint(3,size=5)
-
-
numpy数组索引
-
创建一个多维数组b
>>>b=np.random.random((3,3))
-
获取第二行第三列元素数据
>>>b[1,2]
-
获取第二列数据
>>>b[:,1]
-
获取第三列的前两行数据
>>>b[;2,2]
-
-
数组的基础运算
-
创建两个不同的数组
>>> a = np.arange(4) >>> b = np.array([5, 10, 15, 20])
-
两个数组做减法运算
>>> b - a array([ 5, 9, 13, 17])
-
计算数组的平方
>>> b**2 array([ 25, 100, 225, 400], dtype=int32)
-
计算数组的正弦值
>>> np.sin(a) array([0. , 0.84147098, 0.90929743, 0.14112001])
-
数组的逻辑运算
>>> b < 20 array([ True, True, False, False])
-
数组求均值和方差
>>> np.mean(b) 12.5 >>> np.var(b) 31.25
-
-
数组矩阵运算
-
创建两个不同的数组
>>> A = np.array([[1,1], [0,1]]) >>> B = np.array([[2,0], [3,4]])
-
矩阵元素乘积
>>> A * B array([[2, 0], [0, 4]])
-
矩阵乘法
>>> A.dot(B) array([[5, 4], [3, 4]])
-
矩阵求逆
>>> np.linalg.inv(A) array([[ 1., -1.], [ 0., 1.]])
-
矩阵求行列式
>>> np.linalg.det(A) 1.0
-
-
数组维度变换
-
创建一个3×4的数组
>>> a = np.floor(10*np.random.random((3,4))) >>> a array([[4., 0., 2., 1.], [1., 4., 3., 5.], [2., 3., 7., 5.]])
-
查看数组维度
>>> a.shape (3, 4)
-
数组展平
>>> a.ravel() array([4., 0., 2., 1., 1., 4., 3., 5., 2., 3., 7., 5.])
-
将数组变换为2×6数组
>>> a.reshape(2,6) array([[4., 0., 2., 1., 1., 4.], [3., 5., 2., 3., 7., 5.]])
-
求数组的转置
>>> a.T array([[4., 1., 2.], [0., 4., 3.], [2., 3., 7.], [1., 5., 5.]]) >>> a.T.shape (4, 3)
-
-1维度表示NumPy会自动计算该维度
>>> a.reshape(3,-1) array([[4., 0., 2., 1.], [1., 4., 3., 5.], [2., 3., 7., 5.]])
-
-
数组合并与切分
-
按行合并代码清单1-7中的A数组和B数组
>>> np.hstack((A, B)) array([[1, 1, 2, 0], [0, 1, 3, 4]])
-
按列合并A数组和B数组
>>> np.vstack((A, B)) array([[1, 1], [0, 1], [2, 0], [3, 4]])
-
创建一个新数组
>>> C = np.arange(16.0).reshape(4, 4) >>> C array([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.], [ 12., 13., 14., 15.]])
-
按水平方向将数组C切分为两个数组
>>> np.hsplit(C, 2) [array([[ 0., 1.], [ 4., 5.], [ 8., 9.], [ 12., 13.]]), array([[ 2., 3.], [ 6., 7.], [ 10., 11.], [ 14., 15.]])]
-
按垂直方向将数组C切分为两个数组
>>> np.vsplit(C, 2) [array([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.]]), array([[ 8., 9., 10., 11.], [ 12., 13., 14., 15.]])]
-