NumPy-快速上手

572 阅读4分钟

这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战

NumPy-快速上手

数组的创建

NumPy的特点是其N维数组对象ndarray。

ndarray是一系列同类型数据的集合。

ndarray对象用于存放同类型元素的多维数组。

import numpy as np
a=np.array([1,2,3])
print(a)
print(type(a))

image-20211116150331995

创建区间数组

arange参数(初始值,结束值,步长) 不包含结束值

import numpy as np
a=np.arange(1,10,3)
print(a)
b=np.arange(1,10,0.5)
print(b)

image-20211116150606860

创建二维数组

ndim 维度

shape 行数和列数

size 元素个数

import numpy as np
arr=np.array([[1,2],[4,5],[7,8]])
print(arr)
print(arr.ndim)
print(arr.shape)
print(arr.size)

image-20211116151219055

指定每个维度的长度

ones为生成全1数组

import numpy as np
arr=np.ones(shape=(3,4,5))
print(arr)

image-20211116151531068

数组属性

数组对象的常用属性有:ndim、shape、dtype、size和itemsize。

ndim用来返回数组的维度

shape用来返回数组的形状

dtype用来返回数组的数据类型

size用来返回数组中元素的个数

itemsize用来返回数组中每个元素占用的空间大小(以字节为单位)

import numpy as np
arr=np.array([[1,2],[3,6]])
print(arr.ndim)
print(arr.shape)
print(arr.dtype)
print(arr.size)
print(arr.itemsize)

image-20211116152528919

数据类型

在创建数组时,可以使用dtype来指定数组中元素的类型。

没有指定元素的类型,则会根据元素类型进行推断。

若元素的类型不同,则会选择一种兼容的类型。

import numpy as np
a=np.array([1,5,9.0],dtype=np.float32)
b=np.array([1,'a',2])
print(a.dtype)
print(b.dtype)

image-20211116153838657

astype( )进行类型转换

import numpy as np
a=np.array([1,5,9],dtype=np.string_)
print(a)
a=a.astype(np.uint)
print(a)
print(a.dtype)

image-20211116154146610

reshape( )方法改变数组的形状。

import numpy as np
a=np.arange(15)
print(a)
b=np.reshape(a,(3,5))
print(b)

image-20211116154642905

设置多维

维度-1表示自动计算该维度的大小

import numpy as np
a=np.arange(20)
print(a)
b=np.reshape(a,(-1,2,5))
print(b)

image-20211116154906477

索引与切片

选取多个元素

import numpy as np
a=np.arange(20)
print(a)
print(a[0],a[10])
a=a.reshape((4,5))
print(a)
print(a[2,0])

image-20211116155918621

切片返回的是原数组对象的视图

import numpy as np
a=np.arange(20)
b=a[0:5]
a[2]=33
print(a)
print(b)

image-20211116160752059

如果希望数组能够实现真正的复制 copy( )返回数组的副本

import numpy as np
a=np.arange(20)
print(a)
b=a.copy()
b=b[0:5]
a[2]=33
print(a)
print(b)

image-20211116161107841

条件索引

import numpy as np
a=np.arange(20)
print(a)
b=a[a%2==0]
print(b)

image-20211116161520733

数组扁平化

ravel( )返回的是原数组的视图

flatten( )返回的是原数组的副本

import numpy as np
a=np.arange(15).reshape(3,5)
b=a.ravel()
c=a.flatten()
a[0,0]=1
print(a)
print(b)
print(c)

image-20211116161741783

存储顺序

order参数来指定数组元素的存储顺序

import numpy as np
a=np.array([[1,2,3],[4,5,6]])
b=a.reshape((3,2),order="C")
c=a.reshape((3,2),order="F")
print(a)
print(b)
print(c)

image-20211116162638906

函数

统计

当数组是二维数组时,axis=0按照竖直的方向进行统计, axis=1按照水平的方向进行统计

import numpy as np
a=np.array([[1,2,3],[4,5,6]])
print(np.sum(a,axis=0))
print(np.sum(a,axis=1))

image-20211116173111846

常用的统计函数如下有:

①mean( )/sum( )/median( )。平均值/合/中位数

②max( )/min( )/amax( )/amin( )。最大值/最小值/最大值/最小值

③argmax( )/argmin( )/std( )/var( )。最大值的索引/最小值的索引/标准差/方差

④cumsum( )/cumprod( )。累加/累积

随机

常用的随机函数有:

①np.random.rand( )

②np.random.random( )

③np.random.randn( )

④np.random.normal( ) 高斯分布的概率密度函数

⑤np.random.randint( ) 随机整型数

⑥np.random.seed( ) 随机数种子

⑦np.random.shuffle( ) 随机排列

⑧np.random.uniform( ) 随机采样

import numpy as np
a=np.random.rand(2,2)
b=np.random.random(size=(2,2))
c=np.random.randn(2,2)
print(a)
print(b)
print(c)

image-20211116183811821

连接

concatenate( )对多个数组按指定轴的方向进行连接

import numpy as np
a=np.arange(6).reshape((2,3))
b=np.arange(6).reshape((2,3))
print(a)
print(b)
print(np.concatenate((a,b),axis=0))
print(np.concatenate((a,b),axis=1))

image-20211116184547675

其他

any( ):如果数组中有任何一个元素为True(或者能转换为True),则返回True,否则返回False。

all( ):如果数组中所有元素为True(或者能转换为True),则返回True,否则返回False。

transpose(T)函数在不指定参数时,默认是矩阵转置。

指定参数transpose((0,1))表示按照原坐标轴改变序列,也就是保持不变。

transpose((1,0))表示交换0轴和1轴。

import numpy as np
a=np.arange(6).reshape((3,2))
print(a)
print(a.transpose())

image-20211116195529739