发布时间:2022-09-18 09:30
1.Numpy概述
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数,即能够进行向量化运算的内置函数。
2.数组array的构造
(1)tuple和list转成numpy的array数据类型
import numpy as np
#由列表list生成数组array
my_list=[2,3,5,7,8]
print(my_list)
my_np_array=np.array(my_list)
print(my_np_array)
#由元组tuple生成数组array
my_tuple=(9,6,3,12)
my_np_array1=np.array(my_tuple)
#列表、元组的倍数与数组倍数的不同
print(my_list*3)
print(my_tuple*3)
print(np.array(my_tuple)*3)
结果:
[2, 3, 5, 7, 8] [2 3 5 7 8] [2, 3, 5, 7, 8, 2, 3, 5, 7, 8, 2, 3, 5, 7, 8] (9, 6, 3, 12, 9, 6, 3, 12, 9, 6, 3, 12) [27 18 9 36]
import numpy as np
#1.函数arange()
np.arange(9) #此函数生成数组array,不包括尾数
np.arange(2,9) #左闭右开
print(np.arange(2,9,2) )# [2 4 6 8]
#2.函数linspace()
print(np.linspace(2,10,10)) #在规定的时间内,返回固定间隔的数据
(3)元素为1的矩阵ones和元素全为0的矩阵zeros的自动生成
np.zeros(6) #一维零数组
np.zeros((2,3)) #二维零数组
np.ones(5) #一维数组,元素都是1
np.ones((5,3)) #二维数组,元素都是1
np.ones(5,dtype='int32') #指定数组元素的数据类型,默认为浮点型。
(4)随机数组的生成
.产生随机数
import numpy as np
np.random.seed(10) # random.seed(),省略参数意味着取当前系统时间作为种子
np.random.random() ## 产生一个[0,1)之间的浮点型随机数
print(np.random.random()) #同一个种子值,产生的随机数相同
.生成服正态分布的随机数组
#1.生成标准正态分布随机数组
import numpy as np
np.random.normal(size=(5, 2)) # 产生5x2的每个元素来自标准正态分布的样本矩阵,
#2.生成均值为85,标准差为4的100个正态分布随机数
sampleNo = 100; #样本个数
mu = 85 #均值
sigma = 4 #标准差
s1 = np.random.normal(mu, sigma, size=sampleNo) #返回是一维数组
s2 = np.random.normal(mu, sigma, size=(5,2)) #返回是二维数组
3例题
构造一个3行4列的二维数组,其中数组中的元素来自于均值为2,标准差为3的正态分布。
import numpy as np
np.random.seed(20)
mu=2
sigma=3
my_array=np.random.normal(mu, sigma, size=(3,4))
print(my_array)
结果:
[[ 4.65167934 2.58759507 3.07260955 -5.02978572] [-1.25449776 3.67908887 4.81840805 -0.93544313] [ 3.50929052 3.21924341 2.97038303 0.51976735]]