5.Numpy数组

2023-03-05  本文已影响0人  奶油裙子

一、Numpy

1.Numpy简介

Numpy是针对多维数组的一个科学计算包,这个包还封装了多个可以用于数组间计算的函数可供调用。数组是相同数据类型的元组按照一定顺序排列的组合。
例如array([1, 2, 3, 4, 5, 6, 7, 8, 9])
array([“x”, “y”, “z”, “d”, “q”])
(注意:字典没有顺序,列表、元组、数组有顺序)

(1)
arr1 = np.array([0, 1, 2, 3])#相同数据类型
arr1

运行结果:array([0, 1, 2, 3])

arr2 = np.array(['a', 'b', 'c', 'd'])
arr2

运行结果:array(['a', 'b', 'c', 'd'], dtype='<U1')

(2)顺序数组

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

arr3 = np.arange(10)
arr3

运行结果:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr4 = np.arange(1, 20, 2) #,开端1,结束10,step=2
arr4

运行结果:array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19])

(3)生成全部都是1的数组
np.ones(3)

运行结果:array([1., 1., 1.])

np.ones((3,2))

运行结果:
array([[1., 1.],
[1., 1.],
[1., 1.]])

(4)生成对角线都为1的数组
np.eye(3) #对角线元素都是1

运行结果:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])

(5)Numpy库之random中random、rand、randn、randint的用法

<1>numpy.random.rand()
numpy.random.rand(d0,d1,…,dn)rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1,dn表格每个维度,返回值为指定维度的array

np.random.rand(3)#位于0到1之间随意的3个数

运行结果:array([0.21968831, 0.47507707, 0.60743556])

np.random.rand(3, 2)

运行结果:
array([[0.79117838, 0.97537439],
[0.34227132, 0.83288916],
[0.34596839, 0.00238237]])
<2> numpy.random.randn()
numpy.random.randn(d0,d1,…,dn)randn函数返回一个或一组样本,具有标准[正态分布]dn表格每个维度,返回值为指定维度的array
np.random.randn() # 当没有参数时,返回单个数据
PS:标准正态分布介绍标准正态分布—-standard normal distribution
标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。

np.random.randn(3)

array([ 0.82374372, 0.2602991 , -0.87671764])
<3>numpy.random.randint()
numpy.random.randint(low, high=None, size=None, dtype=’l’)返回随机整数,范围区间为[low,high),包含low,不包含high
参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是http://np.int
high没有填写时,默认生成随机数的范围是[0,low)
np.random.randint(1,size=5) # 返回[0,1)之间的整数,所以只有0

np.random.randint(0, 100, 10)

运行结果:array([12, 92, 70, 17, 14, 26, 84, 34, 26, 41])

np.random.randint(0, 100, (4,5))

运行结果:
array([[55, 0, 98, 99, 86],
[92, 85, 76, 40, 19],
[23, 62, 5, 66, 49],
[ 1, 42, 42, 46, 41]])

a = np.random.randint(0, 100, 20)
a

运行结果:array([73, 85, 91, 82, 42, 16, 8, 58, 1, 76, 23, 86, 47, 12, 19, 99, 46,
85, 19, 87])
<4> numpy.random.choice()
numpy.random.choice(a, size=None, replace=True, p=None)从给定的一维数组中生成随机数
参数: a为一维数组类似数据或整数;size为数组维度;p为数组中的数据出现的概率
a为整数时,对应的一维数组为np.arange(a)

a = np.random.randint(0, 100, 20)
np.random.choice(a, 5)

运行结果:array([19, 23, 19, 91, 73])
<5>np.random.shuffle()类似于洗牌

arr1 = np.array([0, 1, 2, 3])
np.random.shuffle(arr1)
arr1

运行结果:array([2, 0, 3, 1])

2.Numpy数组的基本属性

数组的形状 shape
Ø 数组的大小 size
Ø 数组的类型 dtype
Ø 数组的维数 ndim

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr
arr.shape
arr.size
arr.dtype
arr.ndim

array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
(3, 3)
9
dtype('int32')
2

3.Numpy数组的数据预处理

(1)Numpy数组的类型转换 .astype()

arr = np.arange(5)
arr_f = arr.astype(np.float64)
arr_f.dtype

运行结果:dtype('float64')
(2)Numpy数组的缺失值处理 .isnan()

arr = np.array([1, 2, np.nan, 4])
arr

运行结果:
array([ 1., 2., nan, 4.])

arr[np.isnan(arr)]=0#将查找到的缺失值改为0

(3)Numpy数组的重复值处理 .unique()

arr = np.array([1,2,3,2,1])
np.unique(arr)
arr

运行结果:array([1, 2, 3])

4.数组重塑

(1)一维数组重塑
arr = np.arange(8) 
arr.reshape(2, 4) 
arr.reshape(4, 2) 
(2) 多维数组重塑
arr = np.array([[1, 2, 3 ,4], [5, 6, 7, 8], [9, 10, 11, 12]]) # 这是一个3*4数组
arr.reshape(4, 3) # 将其重塑为4*3数组
arr.reshape(2, 6) # 将其重塑为2*6数组
(3)使用.T进行数组转置
arr 
arr.T 
(4)Numpy数组的简单计算

arr = np.arange(6).reshape(2, 3)

(1)数组与数字之间

arr + 1
arr - 1
arr * 2
arr / 2
arr ** 2

(2)数组与数组

arr * arr

(3)数组合并
(4)横向合并

concatenate方法

arr1 = np.array([[1, 2, 3], [4, 5, 6]]) 
arr2 = np.array([[7, 8, 9], [10, 11, 12]]) 
np.concatenate([arr1, arr2], axis=1) # axis=1表示按横着的方向合并

运行结果:
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])
hstack方法

np.hstack((arr1, arr2))

column_stack方法

np.column_stack((arr1, arr2)) 
(5)纵向合并

concatenate方法

np.concatenate([arr1, arr2], axis=0) 

vstack方法

np.vstack((arr1, arr2)) 

row_stack方法

np.row_stack((arr1, arr2)) 

5. Numpy数组常用函数介绍

(1)abs 返回每个元素的绝对值组成的新数组
sqrt 返回每个元素的平方根组成的新数组
square 返回每个元素的平方组成的新数组
exp 返回每个元素以e为底的指数
log、log10、log2 返回以e、10、2为底的对数
isnan 用来判断是否是NaN,返回布尔值组成的数组
std、var 返回数组元素的标准差和方差
min、max、mean、sum 返回数组的最小值、最大值、平均值、求和
argmin、argmax 返回最小值和最大值对应的索引
cumsum 所有元素的累计和,以数组形式返回
cumprod 所有元素的累计积
(2)Numpy数组的条件函数
Ø Numpy数组中的条件函数 np.where(condition, x, y)类似于Excel中的if函数,若条件为真,则返回x,否则返回y。
(3)Numpy数组的集合关系
包含关系 np.inld(arr1, arr2)
交集 np.intersectld(arr1, arr2)
并集 np.unionld(arr1, arr2)
求差 np.setdiffld(arr1, arr2)

上一篇 下一篇

猜你喜欢

热点阅读