python合道-常规Numpy

ndarray多维数组

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部由以下内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针。
数据类型或 dtype,描述在数组中的固定大小值的格子。
一个表示数组形状(shape)的元组,表示各维度大小的元组。
一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

属性 说明
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

创建数组

  • array()函数,括号内可以是列表、元祖、数组、生成器等
ar2 = np.array([1,2,3.1415,4])
ar3 = np.array([[1,2,3],('a','b','c')])
  • arange(),类似range(),在给定间隔内返回均匀间隔的值。
print(np.arange(10.0))# 返回0.0-9.0,浮点型
print(np.arange(1,5))# 返回1-4左闭右开
print(np.arange(5.0,12,2))  # 返回5.0-12.0,步长为2
  • linspace():返回在间隔[开始,停止]上计算的num个均匀间隔的样本。

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
start:起始值,stop:结束值
num:生成样本数,默认为50
endpoint:如果为真,则停止是最后一个样本。否则,不包括在内。默认值为True。
retstep:如果为真,返回(样本,步骤),其中步长是样本之间的间距 → 输出为一个包含2个元素的元祖,第一个元素为array,第二个为步长实际值

  • zeros()/zeros_like()/ones()/ones_like()

numpy.zeros(shape, dtype=float, order='C'):返回给定形状和类型的新数组,用零填充。
shape:数组纬度,二维以上需要用(),且输入参数为整数
dtype:数据类型,默认numpy.float64
order:是否在存储器中以C或Fortran连续(按行或列方式)存储多维数据。
zeros()/zeros_like()一样,只是填充为1

  • eye()

创建一个正方的N*N的单位矩阵,对角线值为1,其余为0

NumPy 数据类型

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。

名称 描述
bool 布尔型数据类型(True 或者 False)
int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc 与 C 的 int 类型一样,一般是 int32 或 int 64
intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8 字节(-128 to 127)
int16 整数(-32768 to 32767)
int32 整数(-2147483648 to 2147483647)
int64 整数(-9223372036854775808 to 9223372036854775807)
uint8 无符号整数(0 to 255)
uint16 无符号整数(0 to 65535)
uint32 无符号整数(0 to 4294967295)
uint64 无符号整数(0 to 18446744073709551615)
float_ float64 类型的简写
float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_ complex128 类型的简写,即 128 位复数
complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)

Numpy通用函数

.T方法:转置,例如原shape为(3,4)/(2,3,4),转置结果为(4,3)/(4,3,2) → 所以一维数组转置后结果不变
numpy.reshape(a, newshape, order='C'):为数组提供新形状,而不更改其数据,所以元素数量需要一致!
numpy.resize(a, new_shape):返回具有指定形状的新数组,如有必要可重复填充所需数量的元素。
.T/.reshape()/.resize()都是生成新的数组!

.copy():方法生成数组及其数据的完整拷贝
.astype():转换数组类型

np.hstack(tup):水平(按列顺序)堆叠数组
np.vstack(tup):垂直(按列顺序)堆叠数组
np.stack(arrays, axis=0):沿着新轴连接数组的序列,形状必须一样!

np.hsplit(ary, indices_or_sections):将数组水平(逐列)拆分为多个子数组 → 按列拆分
np.vsplit(ary, indices_or_sections):将数组垂直(行方向)拆分为多个子数组 → 按行拆

三角函数:sin()、cos()、tan()。
术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide()。
统计函数:amin() 和 amax()
排序的方法:sort() 函数返回输入数组的排序副本

Numpy随机数

np.random.normal(size=(4,4))#生成一个标准正太分布的4*4样本值

numpy.random.randint(low, high=None, size=None, dtype='l')#生成一个整数或N维整数数组
若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low
dtype参数:只能是int类型

print(np.random.randint(2,size=5))# low=2,size=5 :生成5个[0,2)之间随机整数
print(np.random.randint(2,6,size=5))# low=2,high=6,size=5:生成5个[2,6)之间随机整数  
print(np.random.randint(2,size=(2,3)))# low=2,size=(2,3):生成一个2x3整数数组,取数范围:[0,2)随机整数 
print(np.random.randint(2,6,(2,3)))# low=2,high=6,size=(2,3):生成一个2*3整数数组,取值范围:[2,6)随机整数  

Numpy数据的输入输出

  • 存储/读取数组数据 .npy文件
    np.save('array.npy', ar)
    np.load('array.npy')

  • 存储/读取文本文件
    np.savetxt('array.txt',ar, delimiter=',')
    np.loadtxt('array.txt', delimiter=',')

你可能感兴趣的:(python合道-常规Numpy)