numpy模块
一、Numpy是什么?
Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。如果接触过matlab、scilab,那么numpy很好入手
二、numpy的一些方法:
使用之前安装好numpy模块
1、创建一维、二维数组:
import numpy as np
arr = np.array([1,2,3,4]) # 创建一维数组
arr1 = np.array([[1,2,3,4],[5,6,7,8],[7,8,9,10]]) # 创建二维数组
print(arr)
print(arr1)
运行结果:
2、查看数组的属性
(1)查看维数 ndim
# 查看数组维度 ndim
print(arr.ndim) # 1
print(arr1.ndim) # 2
(2)查看数组的结构:shape
最终结果以元组形式显示 表示几行几列
# 查看数组结构 shape
print(arr.shape)
print(arr1.shape)
# 可以通过给数组结构重新赋值从而改变数组结构
arr1.shape = 4,3
print(arr1)
运行结果:
(3)查看元素类型 dtype
# 查看数组元素数据类型
print(arr.dtype)
print(arr1.dtype)
运行结果: (int32表示为int类型数据,在系统中占4个字节,32个比特位,可存储对应的十进制数的范围为-2^31~2^31-1)
3、专门用来构造数组的一些函数
(1)arange函数
与重用的range函数类似,但是arrange创建的是数组类型,而range函数在python2中创建的是一个list列表类型,在python3是range类型,一个可迭代的对象
用法:
arange(起始值,终止值,步长)注意:取不到终止值
arr3 = np.arange(0,1,0.1)
print(arr3)
arr4 = np.arange(1,10,1)
print(arr4)
print(type(arr3),type(arr4))
print(type(range(1,4,1)))
for i,j in zip(arr3,range(1,4,1)):
print(i,j)
运行结果:
(2)构造等差数列的数组 linspace
用法:linspace(起始值,终止值,元素个数) 注意;可以取到终止值,其中元素默认是浮点数类型
arr5 = np.linspace(1,10,10) # 包含终止值
print(arr5)
for i in arr5:
print(i,'元素类型是:',type(i))
运行结果:
(3)构造等比数列的数组
logspace(起始指数,终止指数,元素个数)
注意:起始值,终止值都是指数,默认底数为base = 10
包含终止值,元素是浮点数类型
arr6 = np.logspace(0,2,3)
print(arr6)
运行结果:
(4)构造全0数组: zeros
zeros([(2,3)]) 注意:传入的是元组类型的参数
arr7 = np.zeros([3,4])
print(arr7)
运行结果:
(5)构造全1数组:ones
ones([(2,3)]) 注意:传入的是元组类型的参数
arr8 = np.ones([3,4])
print(arr8)
运行结果:
(6)构造单位数组:方阵 eye
print(np.eye(4))
运行结果:
(7)构造对角数组(方阵)diag
print(np.diag([1,2,3,4]))
运行结果:
4、生成随机数
(1)0到1范围内的数组成的 一维数组 np.random.random()
print(np.random.random(10))
运行结果:
(2)生成服从正态分布的随机数 np.random.randn()
print(np.random.randn(3,4))
运行结果:
(3)生成指定范围内的整数:np.random.randint()
print(np.random.randint(1,10,size=[3,4]))
运行结果:
(4)均匀分布:生成0到1之间的随机数 np.random.rand()
print(np.random.rand(3,4))
运行结果:
5、数组的索引
(1)一维数组的索引
arr = np.arange(10) # 生成一维数组
print(arr)
print(arr[0])
print(arr[::2]) #取所有偶数索引项
print(arr[1::2]) #去所有奇数索引项
运行结果:
(2)二维数组的索引
# 二维数组索引
arr2 = np.array([[1,2,3,4],[5,6,7,8],[9,8,7,6]])
print(arr2)
print(arr2.shape) # 数组的结构
print(arr2[1,0]) # 取得是5 2行1列
print(arr2[0,2:4]) #取得是[3,4] 第一行第三列到第四列
print(arr2[0:2,1:3]) # 2,3 6,7 取得是第一行和第二行的第二列和第三列
print(arr2[1]) #取得是第二行的所有值 [5 6 7 8]
print(arr2[1,:]) #取得是第二行的所有值 [5 6 7 8]
print(arr2[1:3,1:4]) # 取得是第一行和第二行的第2,3,4列
print(arr2[(1,2),(1,3)]) #[6 6] 第二行第二列 和 第三行第四列
运行结果: