1.Numpy的引用
import numpy as np (np为引入模块的别名)
2.N维数组对象:ndarray
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。
设置专门的数组对象,经过优化,可以提升这类应用的运算速度。
例:计算A^2 + B^3,其中,A和B是一维数组。
传统python语言写法:
1 def pySum(): 2 a = [0,1,2,3,4] 3 b = [9,8,7,6,5] 4 c = [] 5 6 for i in range(len(a)): 7 c.append(a[i]**2 + b[i]**3) 8 9 return c 10 11 print(pySum())
使用numpy编写:
1 import numpy as np 2 3 def npSum(): 4 a = np.array([0,1,2,3,4]) 5 b = np.array([9,8,7,6,5]) 6 7 c = a**2 + b**3 8 9 return c 10 11 print(npSum())
ndarray是一个多维数组对象,由两部分组成:
- 实际的数据
- 描述这些数据的元数据(数据维度、数据类型)
ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始。
ndarray实例:
ndarray对象的属性
属性 说明
.ndim 秩,即轴的数量和维度的数量
.shpe ndarray对象的尺度,对于矩阵,n行m列
.size ndarray对象元素的个数,相当于.shape中n*m的值
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小,以字节为单位
ndarray案例:
ndarray的元素类型
数据类型 说明
bool 布尔类型,True或False
intc 与C语言中的int类型一致,一般是int32或int64
intp 用于索引的证书,与C语言中ssize_t一致,int32或int64
int18 字节长度的整数,取值:[-128,127]
int16 16位长度的整数,取值[-32768,32767]
int32 32位长度的整数,取值[-2^31,2^31-1]
int64 64位长度的整数,取值[-2^63,2^63-1]
uint8 8位无符号整数,取值:[0,255]
uint16 16位无符号整数,取值:[0,65535]
uint32 32位无符号整数,取值:[0,2^32-1]
uint64 64位无符号整数,取值:[0,2^64-1]
float16 16位半精度浮点数,1位符号位,5位指数,10位尾数
float32 32位半精度浮点数,1位符号位,8位指数,23位尾数
float64 64位半精度浮点数,1位符号位,11位指数,52位尾数
complex64 复数类型,实部和虚部都是32位浮点数
complex128 复数类型,实部和虚部都是64位浮点数
对比:Python语法仅支持整数、浮点数和复数3种类型
- 科学计算涉及数据较多,对存储和性能都有较高要求
- 对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能
- 对数据元素精确定义,有助于程序员对程序规模有合理评估
ndarray实例:
ndarray数组可以由非同质对象构成
非同质对象为对象类型
非同质ndarray对象无法有效发挥NumPy优势,尽量避免使用
3.ndarray数组的创建方法
- 从Python中的列表、元组等类型创建ndarray数组
- 使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等
- 从字节流(raw bytes)中创建ndarray数组
- 从文件中读取特定格式,创建ndarray数组
-----------------------------------------------------------------------------------------------------------------------------
- 从Python中的列表、元组等类型创建ndarray数组
x = np.array(list/tuple)
x = np.array(list/tuple,dtype=np.float32) dtype可指定哪个元素的数据类型
当np.array()不指定dtype时,NumPy将根据数据情况关联一个dtype类型
- 使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等
函数 说明
np.arange(n) 类似range函数,返回ndarray函数类型,元素从0到n-1
np.ones(shape) 根据shape生成一个全1数组,shape是元组类型
np.zeros(shape) 根据shape生成一个全0数组,shape是元组类型
np.full(shape,val) 根据shape生成一个数组,每个元素值都是val
np.eye(n) 创建一个正方的n*n单位矩阵,对角线为1,其余为0
np.ones_like(a) 根据数组a的形状生成一个全1数组
np.zeros_like(a) 根据数组a的形状生成一个全0数组
np.full_like(a,val) 根据数组a的形状生成一个数组,每个元素值都是val
使用NumPy中其他函数创建ndarray数组
函数 说明
np.linspace() 根据起止数据等间距地的填充数据,形成数组
np.concatenate() 将两个或多个数组合并成一个新的数组