numpy pytorch 接口对应_NumPy安装使用与详细解读,轻松学会NumPy框架-NumPy中文文档 - pytorch中文网...

NumPy是Python中的一个基础包,用于高效处理多维数据。它提供了快速的多维数组操作,标准数学函数,线性代数,随机数生成等功能。本文介绍了NumPy的安装、数据创建、数组函数、统计方法、集合运算和矩阵操作等核心内容,帮助读者深入理解并掌握NumPy的使用。
摘要由CSDN通过智能技术生成

NumPy(Numerical Python的简称)是高性能科学 和数据分析的基础包;NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。

其重要功能如下:

ndarray,一个具有矢量运算和复杂广播能力的快速且节省空间的多维数组。

用于对数组数据进行快速运算的标准数学函数(无需编写循环)。

线性代数、随机数生成以及傅里叶变换功能。

Numpy的安装与使用

如果我们有安装pip,直接使用pip来安装Numpy,Scipy和matplotlib即可,其中Scipy在NumPy的基础上提供了很多科学模块,MatplotLib允许你进行绘图。

pip install numpy scipy matplotlib

等待安装成功后我们即可使用Numpy,Scipy和matplotlib,如下代码导入Numpy包:

import numpy as np

数据创建函数

array将输入的(列表,元组,数组或者其他序列类型)数据转换为ndarray。要么推断出dtype,要么显示指定dtype。默认直接复制输入数据

asarry将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制,使用方法和array相同

arange 类似于内置的range, 但是返回的是一个ndarray而不是列表

ones、ones_like 根据指定的形状和dtyte创建一个全1数组。ones_like以另一个数为参数,并根据其形状和detype创建一个圈1数组

zeros、zeros_like 类似于ones、ones_like,只不过产生的是全0数据而已

empty、empty_like 创建一个新数组,只分配内存空间但不填充任何值

eye、identity 创建一个正方的N*N单位矩阵(对角线为1,其余为0)

使用实例:

import numpy as np

a = [1,3,5,7,9]

a = np.array(a)

print a

#[1 3 5 7 9]

print a.dtype

#int64

print a.shape

#(5,)

#不同于python里面列表的运算

a = a*10

print a

#[10 30 50 70 90]

a = a.astype(np.float64)

print a

#[ 10. 30. 50. 70. 90.]

print a.dtype

#float64

#ones、ones_like用法,zeros、zeros_like相同

print np.ones(5)

#[ 1. 1. 1. 1. 1.]

s = [[1,2,3],[4,5,6]]

print np.ones_like(s)

#[[1 1 1]

# [1 1 1]]

#empty、empty_like使用方法

print np.empty(5)

#[ 0. 0. 0. 0. 0.]

s = [[1,2,3],[4,5,6]]

np.empty_like(s)

#array([[ 0, 0, 4349100036],

# [4349188928, 0, 0]])

#eye、identity的用法

np.eye(5,5)

#array([[ 1., 0., 0., 0., 0.],

# [ 0., 1., 0., 0., 0.],

# [ 0., 0., 1., 0., 0.],

# [ 0., 0., 0., 1., 0.],

# [ 0., 0., 0., 0., 1.]])

np.identity(3)

#array([[ 1., 0., 0.],

# [ 0., 1., 0.],

# [ 0., 0., 1.]])

元素级数组函数

一元ufunc:

abs、fabs 计算整数、浮点数或复数的绝对值。对于非复数,可以使用更快的fabs

sqrt 计算各元素的平方根。相当于arr**0.5

square 计算各元素的平方。相当于arr**2

exp 计算个元素的指数e^x

log、log10、log2、log1p 分别为自然对数(底数为e)、底数为10、底数为2、log(1+x)

sign 计算各元素的正负号, 输出的为1,0,-1代表:1(正数)、0(零)、-1(负数)

ceil 计算各原属的ceilling值,即大于等于该值的最小整数

floor 计算各元素的floor值,即小于等于该值的最大整数

rint 将各元素的值四舍五入为接近的整数,保留dtype

modf 将数组的小数和整数部分以2各独立的数组形式返回

isnan 返回一个表示"那些值是NAN"的布尔整数组

isfinite、isinf 返回一个表示"那些元素师有穷的(非NAN)"或"哪些元素是无穷的"的布尔整数组

cos、cosh、sin、sinh、tan、tanh 普通型和双曲线型三角函数

arccos、arcosh、arcsin、arcsinh、arctan、arctanh 反三角函数

logical_not 计算各元素not x的真值。相当于-arr

上面所有函数的使用方法均相同,没有特殊性,所以不一一列举,使用实例:

# sqrt使用实例

a = np.arange(10)

print a

# [0 1 2 3 4 5 6 7 8 9]

print np.sign(a)

# 输出:[0, 1, 1, 1, 1, 1, 1, 1, 1, 1],1表示正数、0代表为零、-1表示负数

二元ufunc:

add 将素组中的对应元素相加

subtract 从第一个数组中减去第二个数组中的元素

muitiply 数组元素相乘

divide、floor_divide 除法或向下圆整除法(丢弃余数)

power 对第一个数组总的元素A,根据第二个数组中的相应元素B,计算A^B

maximum、fmax 元素级的最小大值计算。fmax将忽略NaN

mod 元素级的求模计算(除法的余数)

copysign 将第二个数组中的值的符号复制给第一个数组中的值

greater、greater_equal、less、less_equal、equal、less_equal、equal、not_equal 执行元素的比较运算,最终产生布尔型数组。相当于中缀运算符>、>=、

logical_and、logical_or、logical_xor 执行元素级的真值逻辑运算。相当于中缀运算符&、|、^

x = np.random.randn(8)

y = np.random.randn(8)

print x

print y

print np.add(x,y)

#输出

[ 2.22162794 0.20938865 -0.25770183 1.14488958 -1.47362583 -0.536403 0.54836918 1.5451774 ]

[-1.83212425 1.805915 1.02510319 -0.53042174 0.35915362 -0.71709233 0.49667371 0.06864708]

[ 0.38950369, 2.01530365, 0.76740136, 0.61446784, -1.11447221, -1.25349533, 1.04504289, 1.61382448]

基本数组统计方法

sum 对数组中全部或某轴向的元素求和。零长度的数组的sum为0

mean 算术平均数。零长度的数组的mean为NaN

std、var 分别为标准差和方差,自由度可调(默认为n)

min、max 最大值和最小值

argmin、argmax 分别为最大和最小元素的索引

cumsum 所有元素的累计和

cumprod 所有元素的累计积

使用实例:

x = np.random.randint(1,5,5)

print x

# 输出[2 3 3 2 4]

print np.cumsum(x)

# 输出[ 2 5 8 10 14]

数据的集合运算

unique 计算x中的唯一元素,并返回有序结果

intersect1d(x,y) 计算x和y中的公共元素,并返回有序结果

union1d(x,y) 计算x和y的并集,并返回有序结果

in1d(x,y) 得到一个表示"x的元素是否包含于y"的布尔型数组

setdiff1d(x,y) 集合的差集,即元素在x中并不在y中

setxor1d(x,y) 集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素

a = np.random.randint(1,6,5)

print a

# 输出[5, 4, 4, 2, 2]

print np.unique(a)

# 输出[2, 4, 5]

# 计算x和y的并集

x = np.random.randint(1,5,5)

y = np.random.randint(1,6,5)

print x

# 输出[2 4 3 3 1]

print y

# 输出[3 1 1 3 4]

print np.union1d(x,y)

# 输出[1, 2, 3, 4]

常用的numpy.linalg函数

diag 以一位数组的形式返回方阵的对角线(或非对角线)元素,或将一位数组转换为方阵(非对角线元素为0)

dot 矩阵乘法

trace 计算对角线元素的和

det 计算矩阵行列式

eig 计算方阵的本征值和本征向量

inv 计算方阵的逆

pinv 计算矩阵的Moore-Penrose伪逆

qr 计算QR分解

svd 计算奇艺值分解(SVD)

solve 解线性方程组Ax=b,其中A为一个方阵

lstsq 计算Ax=b的最小乘解

a = np.random.rand(3,3)

print a

# [[ 0.95506305 0.77311157 0.44264429]

# [ 0.31639102 0.87878477 0.96184546]

# [ 0.72315137 0.77126853 0.71526998]]

print np.diag(a)

# 输出:[ 0.95506305, 0.87878477, 0.71526998]

print np.trace(a)

# 2.54911780047

# 我们这里还是所有刚才的例子来计算矩阵乘法

x = np.random.randint(1,5,5)

y = np.random.randint(1,6,5)

print x

# 输出[2 4 3 3 1]

print y

# 输出[3 1 1 3 4]

print np.dot(x,y)

# 输出26,相当于2*3+4*1+3*1+3*3+1*4

部分numpy.random函数

seed 确定随机数生成器的种子

permutation 返回一个序列的随机排列或者返回一个随机列的范围

shuffle 对一个序列就地随机排列

rand 产生均匀分布的样本值

randint 从给定的上下限范围内随机选取整数

randn 产生正态分布(平均值为0,标准差为1)的样本值,类似于MATLAB接口

binomial 产生二项分布的样本值

normal 产生正态(高斯)分布的样本值

beta 产生Beta分布的样本值

chisquare 产生卡方分布的样本值

gamma 产生Gamma分布的样本值

uniform 产生(0,1)中均匀分布的样本值

# 使用方法都是大同小异,接下来我们来看一看

# 生产一个3行3列的随机矩阵

print np.random.rand(3,3)

# 在3到5中选择成为一行三列的矩阵

print np.random.randint(3,5,3)

数组连接函数

concatenate 最一般化的链接,沿一条轴连接一组数组

vstack、row_stack 以面向行的方式对数组进行堆叠(沿轴0)

hstack 以面向行的方式对数组进行堆叠(沿轴1)

column_stack 类似于hstack, 但是会先将一维数组转换为二维列向量

dstack 以面向"深度"的方式对数组进行堆叠(沿轴2)

split 沿指定轴在指定的位置拆分数组

hsplit、vsplit、dsplit split的便捷化函数,分别沿轴0,轴1,轴2进行拆分

# 生产一个3行3列的随机矩阵

b = np.random.rand(3,3)

print b

# [[ 0.0313988 , 0.6232195 , 0.05890425],

# [ 0.96634376, 0.30205009, 0.7556322 ],

# [ 0.53313903, 0.22614023, 0.03904029]]

print np.concatenate(b)

# [ 0.0313988 , 0.6232195 , 0.05890425, 0.96634376, 0.30205009, 0.7556322 , 0.53313903, 0.22614023, 0.03904029]

take、where、copy的用法

1、take:

arr = np.arange(10)*100

inds = [7,1,2,6]

print arr.take(inds) #[700 100 200 600]

2、where:

numpy.where函数是三元表达式x if condition else y的矢量化版本。

arr = np.random.randn(4,4)

print arr

[[-1.49198141 1.7730161 0.26431341 0.56486885]

[ 1.35869064 -0.72590907 0.85217981 1.63125357]

[ 0.03978439 -1.14930575 -0.04916222 0.58884003]

[-0.80573536 0.06746035 -1.12376692 0.94245017]]

print np.where(arr < 0, 0, arr)

[[ 0. 1.7730161 0.26431341 0.56486885]

[ 1.35869064 0. 0.85217981 1.63125357]

[ 0.03978439 0. 0. 0.58884003]

[ 0. 0.06746035 0. 0.94245017]]

3、copy:

data_copy = data.copy()

# 可以得到一份副本,并不影响原来的数据

NumPy安装使用与详细解读,轻松学会NumPy框架-NumPy中文文档 - pytorch中文网

原文出处: https://ptorch.com/news/33.html

问题交流群 :168117787

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值