python numpy库作用_整理numpy库的常用功能(持续更新…),NumPy,函数,梳理

NumPy简介

NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。

NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。

基础知识

NumPy的数组类被调用ndarray。它也被别名所知 array。请注意,numpy.array这与标准Python库类不同array.array,后者只处理一维数组并提供较少的功能。ndarray对象更重要的属性是:

ndarray.ndim - 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。

ndarray.shape - 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有 n 行和 m 列的矩阵,shape 将是 (n,m)。因此,shape 元组的长度就是rank或维度的个数 ndim。

ndarray.size - 数组元素的总数。这等于 shape 的元素的乘积。

ndarray.dtype - 一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。

ndarray.itemsize - 数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。

ndarray.data - 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。

#一个例子

import numpy as np

a = [[0,1, 2], [3 ,4 ,5], [6, 7 ,8]]

a=np.asarray(a)

print(a.ndim,a.shape,a.size,a.dtype,a.itemsize,a.data )

#output 2 (3, 3) 9 int32 4

ndarray数组的创建

np.arange(n) ; 元素从0到n-1的ndarray类型

np.ones(shape): 生成全1

np.zeros((shape), ddtype = np.int32) : 生成int32型的全0

np.full(shape, val): 生成全为val

np.eye(n) : 生成单位矩阵

np.ones_like(a) : 按数组a的形状生成全1的数组

np.zeros_like(a): 同理

np.full_like (a, val) : 同理

np.linspace(1,10,4): 根据起止数据等间距地生成数组

np.linspace(1,10,4, endpoint = False):endpoint 表示10是否作为生成的元素

np.concatenate():

ndarray数组的维度变换

.reshape(shape) : 不改变当前数组,依shape生成

a=np.array(range(9)).reshape(3,3)#生成3*3数组

.resize(shape) : 改变当前数组,依shape生成

.swapaxes(ax1, ax2) : 将两个维度调换

.flatten() : 对数组进行降维,返回折叠后的一位数组

数组的类型变换

数据类型的转换 :a.astype(new_type) : eg, a.astype (np.float)

数组向列表的转换: a.tolist()

数组的索引和切片

一维数组切片

a = np.array ([9, 8, 7, 6, 5, ])

a[1:4:2] –> array([8, 6]) : a[起始编号:终止编号(不含): 步长]

多维数组索引

a = np.arange(24).reshape((2, 3, 4))

a[1, 2, 3] 表示 3个维度上的编号, 各个维度的编号用逗号分隔

多维数组切片

a [:,:,::2 ] 缺省时,表示从第0个元素开始,到最后一个元素

数组的运算

np.abs(a) np.fabs(a) : 取各元素的绝对值

np.sqrt(a) : 计算各元素的平方根

np.square(a): 计算各元素的平方

np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数

np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)

np.rint(a) : 各元素 四舍五入

np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回

np.exp(a) : 计算各元素的指数值

np.sign(a) : 计算各元素的符号值 1(+),0,-1(-)

.

np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值

np.minimum(a, b) np.fmin() : 取最小值

np.mod(a, b) : 元素级的模运算

np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素

numpy随机数函数

简介numpy 的random子库

rand(d0, d1, …,dn) : 各元素是[0, 1)的浮点数,服从

均匀分布

randn(d0, d1, …,dn):标准

正态分布

data=np.random.rand(10)

data1=np.random.randn(10)

“”[0.03204083 0.27937194 0.

69090113 0.26315503 0.48795894 0.28773118

0.44494569 0.52262717 0.04793805 0.91971475]

[ 0.78044614 -1.63095456 -0.88627282 0.40722248 0.25078519 -0.72235564

0.81553023 0.79439466 0.0347481 1.04211688]

“”

randint(low, high,( shape)): 依shape创建随机整数或整数数组,范围是[ low, high)

data=np.random.randint(1,36,6)

"""[27 33 19 6 13 30]

"""

seed(s) : 随机数种子

shuffle(list) : 根据数组a的第一轴进行随机排列,改变数组list元素的顺序

import random

list = [20, 16, 10, 5]

data=random.shuffle(list)

#[5, 20, 10, 16]

choice(a) : 返回随机项

import random

list = [20, 16, 10, 5]

data=random.choice(list)

#16

uniform() 方法将随机生成下一个实数,它在 [x, y] 范围内

import random

list = [20, 16, 10, 5]

data=random.uniform(1,10)

#3.644723336854002

seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。

randrange() 方法返回指定递增基数集合中的一个随机数,基数默认值为1。

import random

data=random.randrange (10, 100 ,5)

print(data)

#65

numpy的统计函数

sum(a, axis = None) : 依给定轴axis计算数组a相关元素之和,axis为整数或者元组

mean(a, axis = None) : 同理,计算平均值

average(a, axis =None, weights=None) : 依给定轴axis计算数组a相关元素的加权平均值

std(a, axis = None) :同理,计算标准差

var(a, axis = None): 计算方差

eg: np.mean(a, axis =1) : 对数组a的第二维度的数据进行求平均

a = np.arange(15).reshape(3, 5)

np.average(a, axis =0, weights =[10, 5, 1]) : 对a第一各维度加权求平均,weights中为权重,注意要和a的第一维匹配

min(a) max(a) : 计算数组a的最小值和最大值

argmin(a) argmax(a) : 计算数组a的最小、最大值的下标(注:是一维的下标)

unravel_index(index, shape) : 根据shape将一维下标index转成多维下标

ptp(a) : 计算数组a最大值和最小值的差

median(a) : 计算数组a中元素的中位数(中值)

eg:a = [[15, 14, 13],

[12, 11, 10] ]

np.argmax(a) –> 0

np.unravel_index( np.argmax(a), a.shape) –> (0,0)

你可能感兴趣的:(python,numpy库作用)