本文主要是通过学习《Python科学计算第二版》整理的一个学习笔记。
关于数组的操作我们主要关心的是以下几个方面:
接下来将用表格的形式罗列以及区分各种创建和操作的方法
一、三种格式
格式 | 特点 | 优点 | 缺点 | 例子 |
列表(List) | 指针+对象 | 便于运算操作 | 占用内存 | a=list((1,2,3)) print(a,type(a)) |
数组(array) | 对象 | 不支持多维数组,没有运算操作 | 内存少 | |
库(NumPy) | 1、ndarray:n维数组 2、ufunc:处理数组 | 多种数组操作 |
二、库NumPy中的部分函数
先导入库Numpy,并简化为np,后续的调用就可以直接用np._
import numpy as np
(1)创建:
1、手动输入
c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
2、自动生成
#自动创建
#arange(起,终,间隔),终不在数组中,即下列数组最后一个元为0.9
b1=np.arange(0,1,0.1)
#linspace(起,终,元素个数),等差数列,用endpoint=参数指定是否包含终值,默认True包含,False不包含
b2=np.linspace(0,1,10)
b3=np.linspace(0,1,10,endpoint=False)
#logspace(起,终,元素个数),等比数列,起终均是基底为10的指数部分,参数base改变基底,参数endpoint同上
b4=np.logspace(0,2,5)
b5=np.logspace(0,1,12,base=2,endpoint=False)
输出如下:
(2)操作
按照思维导图对数组库中的部分操作归纳如下:
操作 | 含义 | 例子 | |||
数值 | 数据类型 | dtype | 创建数组时的类型参数 | int,float,complex | 1、ai=np.array([1,2,3,4],dtype=complex) 2、af=np.int16(200) #数值有范围,大则溢出为负,运算速度慢 3、#查询: ai.dtype |
type | NumPy中的类型值 | ai.dtype.type | |||
astype(type) | 改变数据类型 | 1、t2 = np.array([1, 2, 3, 4], dtype=np.int) 2、#强制转换 c=complex(12) | |||
大小 | np.array([]) | 数组从0开始编号 | #创建 a=np.array([1,2,3,4],[2,3,4,5]) #修改 a[0]=10 | ||
内存 | shape | 数组两个轴的维数: 0轴、1轴 | #查询a的两轴大小 a.shape | ||
reshape | 在保持数组元素个数不变时,改变数组的两个轴的大小;仅改变形状,元素在内存中的位置不变 | 1、#a有8个元素,则可以分成(1,8)(2,4) a.shape=1,8 #某轴为-1时自动根据总数/另一轴 a.shape=4,-1 i.e. a.shape=4,2 2、reshape改变大小并赋给新数组,两数组共用 内存,同大小 d=a.reshape((8,1))
|