数模美赛准备——Numpy
C题多用到Python进行数据处理,因此在赛前准备相关知识
1. 安装Numpy
- win+R,输入cmd。
- 输入pip install numpy。
如图所示,完成安装。
2. 创建数组
再完成创建数组前,首先应该导入Numpy模块
import numpy as np
创建一维数组
a = np.array([1,2,3,4])
创建二维数组
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
dtype属性
a.dtype
shape属性
a.shape
利用shape改变数组的行和列
例如上面的a是三行四列的二维数组
输入
a.shape = 4,3
此时查看这个数组
它变成了一个四行三列的数组,需要注意的是这一操作并非并非转置
,只是安装顺序调整数组的行和列。
当修改shape
属性时,将最后一个参数改为-1,则会根据前几个参数自动算出最后一个参数:
例如:
a.shape = 2 ,-1
根据元素个数,计算出总共需要6列。
reshape函数
与直接修改数组的shape属性不同的是,reshape函数在原数组的基础上创建新的数组而非直接对原数组进行修改。
输入:
b = a.reshape(3,4)
查看数组b
通过数组索引,修改数组元素
输入:
b[1] = 2021
将数组b的第二行所有元素修改为2021
创建数组时修改元素类型
a = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9,
10]], dtype=np.float)
a = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9,
10]], dtype=np.complex)
arange函数
arrange的三个参数分别是起始值,终止值,步长,依然是左闭右开区间
f = np.arange(0,1,0.1)
linspace函数
和arrange类似,只不过第三个参数是元素个数。
np.linspace(0,1,10)
如果输入endpoint = False
这个参数,则不包括终点
logshape函数
从 1 0 m 10^m 10m到 1 0 n 10^n 10n直间产生 N N N个数
np.logspace(0, 2, 20)
特殊的创建函数
zeros函数:用于创建元素全为0的数组
ones函数:用于创建元素全为1的数组
empty函数:用于创建未初始化的规定大小的数组
np.empty((2,3),np.int) #只分配内存,不对其进行初始化
3. 存取元素
切片
a[3:5] #第4个到第5个元素
a[:5] #没有参数,默认从0开始
a[:-1] #负数代表从后向前
a[1:-1:2] # 范围中的第三个参数表示步长,2表示隔一个元素取一个元素
共享
和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间:
b = a[3:7] # 通过下标范围产生一个新的数组b,b和a共享同一块数据空间
此时修改数组b的元素
b[2] = -10 # 将b的第3个元素修改为 -10
查看数组b
再查看数组a
a中相应元素也被修改。
布尔数组
生成一个从10到2递减的数组
x = np.arange(10,1,-1)
x[[3, 3, 1, 8]] # 获取x中的下标为3, 3, 1, 8的4个元素,组成一个新的数组
b = x[np.array([3,3,-3,8])] #下标可以是负数
此时b并非从x的切片而来,因此b与x并不共享数据空间
。
x = np.random.rand(10) # 产生一个长度为10,元素值为0-1的随机数的数组
查找随机数中大于0.5的元素
x[x>0.5]
这就是根据布尔数组的原理取出对应的元素。