NumPy是Python的一个科学计算库,提供了矩阵计算的功能。Pandas对NumPy库进行了二次封装,提供了更强大的功能。
NumPy可用来存储和处理大型矩阵,比Python自身的数据结构(字符串,队列,元组,字典)更高级。NumPy的主要对象是一个多维度的,均匀的多维数组,可以进行矩阵运算。
创建矩阵
(1) 直接赋值创建矩阵
import numpy as np
#创建一维数组
arr1=np.array([1,2,3,4,5])
print(arr1)
print(arr1.shape) #结果为(5,)
#创建二维数组
arr2=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(arr2.shape) #结果为(2, 5),是一个2行5列的二维数组
修改一维矩阵和二维矩阵
#修改一维数组第1个元素的值
arr1[1]=100 #结果为[ 1 100 3 4 5]
#修改二维数组第1行第2列元素的值
arr2[1,2]=1000
#修改二维数组第0行
arr2[0]=(1,1,1,1,1)
arr2[0]=1
矩阵求和
#全部求和
arr.sum()
#按列对二维数组求和
arr.sum(axis=0)
#按行对二维数组求和
arr.sum(axis=1)
axis是轴的意思。轴是用来为超过一维的数组定义的属性,二维数组拥有两个轴。
axis=0为行,axis=1为列。
(2) 通过函数创建矩阵
1.NumPy的range()函数
np.arange([start,]stop[,step,],dtype=None)
example:
import numpy as np
#创建一维数组
arr=np.arange(1,11,3)
# output:
[ 1 4 7 10]
#创建二维矩阵
arr=np.arange(1,13).reshape(3,4)
print(arr)
#output:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
2.NumPy的随机函数
np.random.rand(6) #取6个位于[0,1]中的随机样本
np.random.randint(1,100,5) #从1到100中取5个整数
np.random.randn(3,4) #从标准正态分布中返回多个样本值生成3行4列的数组
再次运行脚本,返回结果不同,若想保持不变,则需设置随机数种子,如
np.random.seed(1)
print(np.random.randn(3,4))
多次运行,结果保持不变。
3.NumPy的linspace()函数
np.linspace() 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
4.NumPy的logspace()函数
np.logspace()函数用于生成等比数列
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
#序列的起始值为base**start,终止值为base**stop
ndarray对象属性
ndarray.ndim : 数组的维数,也称为秩rank。
ndarray.shape : 数组各维的大小,是tuple元组类型。对一个n行,m列的矩阵来说,shape为(n,m)
ndarray.size : 数组中元素的总数。
ndarray.dtype : 数组每个元素的类型
矩阵的截取
1.按行列截取矩阵
import numpy as np
arr2=np.array([[1,2,3,4,5],[6,7,8,9,10]])
#获取矩阵第0-1行数据
print(arr2[0:1])
#获取矩阵第0行数据
print(arr2[0])
print(arr2[0,:])
#获取第1行,第2-4列数据
print(arr2[1,2:5])
#获取矩阵前两列的数据
print(arr2[:,0:2])
numpy截取数组部分和python的list截取部分不同,它不创建新数组,只是指向原数组的部分,所以当修改截取部分的某个值,原数组也会被修改,它们都指向同一个数组。
arr2[0,1:4]
s[0]=100
print(arr2)
#output:
[[ 1 100 3 4 5]
[ 6 7 8 9 10]]
2.按条件截取矩阵
import numpy as np
arr=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(arr[arr>6])
print(arr>6)
#output:
[ 7 8 9 10]
[[False False False False False]
[False True True True True]]
按条件截取数组,使用最多的是将数组中满足条件的元素变成指定值,例:
arr[arr>6]=0
print(arr)
#output:
[[1 2 3 4 5]
[6 0 0 0 0]]