Java教程

Numpy

本文主要是介绍Numpy,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Numpy 使用前需要导入 numpy,一般写作

import numpy as np

可通过 np.+Tab 来查看可使用的函数,并通过 函数 + ?来查看函数的具体帮助信息。

1. ndarray 的创建和使用

 Numpy 封装了一个心得数据类型 ndarray,它是一个多维数组对象。该对象封装了许多常用的数学运算函数。创建它的方法主要为以下几种:

1.1 直接将python的基本数据类型转换为ndarray

 1)将列表转换为ndarray

import numpy as np

lst1 = [3,2,34,1,0]
nd1 = np.array(lst1)
print(nd1)
print(type(nd1))

2) 嵌套列表可以转换为多为ndarray

import numpy as np

lst2 = [[3,0,34,2,4],[2,4,1,4,5]]
nd2 = np.array(lst2)
print(nd2)
print(type(nd2))

将上述例子中的列表转换为元组同样适用。

1.2 利用random 模块生成数组

        如果需要对数组进行一些条件设置,可以适用random。可以用来进行算法的初始化,如正态分布或均匀分布等。下面列举 np.random 模块常用的函数:

表1-1 np.random 模块常用函数
函数描述
np.random.random生成0到1之间的随机数
np.random.uniform生成均匀分布的随机数
np.random.randn生成标准正态的随机数
np.random.randint生成随机的整数
np.random.normal生成正态分布
np.random.shuffle随机打乱顺序
np.random.seed设置随机数种子
random_sample生成随机的浮点数

1.3 创建特定形状的多维数组

        参数初始化时,有时需要生成一些特殊矩阵,如全是0或1的数组或矩阵,这时我们可以利用下表的函数来实现。

表 1-2 Numpy 数组创建函数
函数描述
np.zeros((4,5))创建4✖5的全为0的数组
np.ones((4,5))创建4✖5的全为1的数组
np.empty((4,5))创建4✖5的空数组,数组中的值并不为0,而是未初始化的数值
np.zeros_like(aa)以aa相同维度创建元素全为0的数组
np.ones_like(aa)以aa相同维度创建元素全为1的数组
np.empty_like(aa)以aa相同维度创建空数组
np.eye(4)该函数创建一个4✖4的单位矩阵I
np.full((4,5),233)创建4✖5的元素全为233的数组,233为指定值

将生成的数据保存

import numpy as np

nd3 = np.random.random([4,5])
np.savetxt(X = nd3, fname = './test1.txt')
nd4 = np.loadtxt('./test1.txt')

1.4 利用 arange、linspace 函数生成数组

        arrange 是 numpy 模块中的函数,其格式是:

arrange([start,] stop[,step,], dtype=None)

其中,start(默认为0) 和stop 是用来指定范围, step(可以是小数) 用来设定步长。 

import numpy as np

print(np.arange(10))
# [0 1 2 3 4 5 6 7 8 9]
print(np.arange(0,10))
# [0 1 2 3 4 5 6 7 8 9]
print(np.arange(1,4,0.5))
# [1. 1.5 2. 2.5 3. 3.5]
print(np.arange(9,-1,-1))
#[9 8 7 6 5 4 3 2 1 0]

        linspace 也是numpy 模块中常用的函数,它可以根据输入的指定数据范围以及等份数量,自动生成一个线性等份向量,其格式为:

np.linspace(start, stop, num=50, endpoint = True, retstep = False, dtype = None)

 2. 基本操作

 2.1 获取数据

import numpy as np 

np.random.seed(2021)
nd5 = np.randdom.random([10])
# 获取指定位置的数据,获取第3个元素
nd5[2]
# 截取一段数据
nd5[2:5]
# 截取固定间隔数据
nd5[1:6:2]
# 倒序取数
nd5[::-2]
#截取一个多维数组的一个区域内数据
nd6 = np.arange(25).reshape([5,5])
nd6[1:4,1:4]
# 截取一个多维数组中,数值在一个值域之内的数据
nd6[(nd6 > 2)& (nd6 < 9)]
# 截取多为数组中,指定的行,如读取第3,4行
nd6[[2,3]] # or nd6[[2:4,:]]
# 截取指定的列
nd6[:,2:4]

        除了通过上述的方法外,还可以通过一些函数来实现,如random.choice 函数从指定的样本中随机抽取数据。

import numpy as np
from numpy import random as nr

a = np. arange(1,25,dtype = float)
c1 = nr.choice(a,size = (2,3)) # the size is the shape of the array c1
c2 = nr.choice(a,size = (2,3),replace = False) # when replace is True, the function can         repreat choice one number.
# the paremeter p is the probability of extraction for each element,defaule is same.
c3 = nr.choice(a, size = (2,3), p = a./np.sum(a))
print("repreat")
print(c1)
print("can not repreat")
print(c2)
print("repreat and probaility")
print(c3)

这篇关于Numpy的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!