Numpy - 数组array的构造

发布时间: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]

(2)arange()、linspace()生成数组

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]]

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号