Numpy数值计算基础
Numpy:是Numerical Python的简称,它是目前Python数值计算中最为基础的工具包,Numpy是用于数值科学计算的基础模块,不但能够完成科学计算的任而且能够用作高效的多维数据容器,可用于存储和处理大型矩阵。Numpy的数据容器能够保存任意类型的数据,这使得Numpy可以无缝并快速地整合各种数据。Numpy本身并没有提供很多高效的数据分析功能。理解Numpy数组即数组计算有利于更加高效地使用其他如pandas等数据分析工具。
Numpy提供了两种基本的对象:ndarray(多维数组对象)和ufunc(通用函数)
1.数组属性:
ndim:返回int 。数组的维度
shape:返回tuple。表示数组的尺寸,对于n行m列的矩阵,形状为(m,n)
size:返回int。表示数组的元素整数,等于数组形状的乘积
dtype:返回data-typle。描述数组中元素的类型
itemsize:返回int。表示数组中每个元素的大小(以字节为单位)
1 import numpy as np 2 arr1 = np.arange(9).reshape(3,3) 3 print("创建数组:",arr1) 4 print("数组的维度:",arr1.ndim) 5 print("数组的尺寸(形状):",arr1.shape) 6 print("数组的数据类型:",arr1.dtype) 7 print("数据元素个数:",arr1.size) 8 print("数据每个元素大小:",arr1.itemsize)
2.数组创建
一、生成多维数组最简单的方式就是使用array函数,array函数接受任意的序列型对象(当然也包括其他的数组)。
基本语法法:numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)
1.object 接受array。表示想要创建的数组.无默认
2.dtype 接受data-type.表示数组所需的数据类型。默认为None
3.ndmin 接受int。指定数组的最小维度。默认为None
import numpy as np data1 = [1,2,3,4,5] data2 = [[1,2,3,4],[5,6,7,8]] print("生成一维数组:",np.array(data1)) #生成一维数组 print("生成二维数组:",np.array(data2)) #生成二维数组
二、使用其他函数创建数组
1 import numpy as np 2 print("使用arange函数生成数组:",np.arange(0,10,1)) #左闭右开 3 print("使用linspace函数生成数组:",np.linspace(0,9,10)) #闭区间 4 print("使用logspace函数生成数组:",np.logspace(0,2,10)) #[1,100]生成10个数 5 print("使用zeros函数生成数组:",np.zeros((2,3))) #生成二行三列全为0的数组 6 print("使用ones函数生成数组:",np.ones((2,3))) #生成二行三列全为一的数组 7 print("使用eye函数生成数组:",np.ones(3)) #生成对角线上为一的数组 8 print("使用diag函数生成数组:",np.diag([1,2,3,4]))
3.数组的数据类型
在Numpy中,所欲数组的数据类型是同质的,即数组中的所有元素必须是一致的。这样做的好处,更容易确定数组所需要的存储空间。
bool :用一位存储的布尔类型(True or False)
inti:由所在平台决定其精度的整数
int8:整数 范围为:-128~127
int16:整数 范围为:-32768~32767
int32:整数 范围为:-2^31~2^32-1
int64:整数 范围为:-2^63~2^63-1
unit8:无符号整数 范围为:0~255
unit16:无符号整数 范围为:0~65535
unit32:无符号整数 范围为0~2^32-1
unit64 无符号整数 范围为0~2^64-1
float16:半精度浮点数
float32:单精度浮点数
float64: 双精度浮点数
complex64 复数 分别用32为浮点数代表实部和虚部
complex128/comple 复数分别用64位浮点数表示实部和虚部
np.dtype() 查看数据类型
print(np.float(32)) #整形转化为浮点型 print(np.int(42.0)) #浮点型转化为整形 print(np.bool(42)) #整形转化为bool型 print(np.float(True)) #bool型转化为浮点型
4.生成随机数
Numpy提供了强大的生成随机数的功能,但使用的都是伪随机数.random 是最常见的生成随机数的方法.
1 print("生成随机数:",np.random.random()) 2 print("生成均匀分布的随机数",np.random.rand(10,5)) 3 print("生成正态分布的随机数",np.random.randn(10,5)) 4 print("生成给定上下限的随机数:",np.random.randint(0,10,size=[5,2])) 5 print("生成二项分布随机数:",np.random.binomial(10,0,(2,3))) 6 print("生成beta分布随机数:",np.random.beta(0.2,0.3,(2,3))) 7 print("生成卡方分布随机数:",np.random.chisquare(10,[5,2])) 8 print("生成gamma分布随机数:",np.random.gamma(10,1,(5,2))) 9 print("生成任意期间均匀分布随机数:",np.random.uniform(0,10,(5,2)))
5.通过索引访问数组
1.一维数组的索引
一维数组的索引比较简单,与Python中list的索引方法类似:如果你传递一个数值给数组的切片,数值会被传递给整个切片。区别于Python的内建列表,数组的切片是原数组的视图。这意味着数据并不是被复制,任何对于视图的修改都会反映到原数组上。
1 arr1 = np.arange(10) 2 print(arr1[1]) #获得索引为1的值 3 print(arr1[1:3]) #获得索引为1,2的值 4 arr1[2:4] = 12 5 print(arr1) #[ 0 1 12 12 4 5 6 7 8