目录
介绍:
NumPy是一个用于数值计算的Python库,它提供了高效的多维数组对象(ndarray)、用于数组计算的函数以及用于线性代数、傅里叶变换和随机数生成的工具。
NumPy的主要特点包括:
1. ndarray:NumPy的多维数组对象,可以存储相同类型的元素,并提供了许多用于数组操作的方法。
2. 广播(broadcasting):NumPy能够进行不同形状数组之间的运算,通过广播机制自动对数组进行扩展和操作。
3. 数学函数:NumPy提供了丰富的数学函数,如三角函数、指数和对数函数、线性代数函数等。
4. 线性代数:NumPy提供了一组线性代数函数,如矩阵乘法、行列式求解、特征值和特征向量等。
5. 傅里叶变换:NumPy提供了一组傅里叶变换函数,用于信号处理和频谱分析。
6. 随机数生成:NumPy提供了用于生成各种分布的随机数的函数,如正态分布、均匀分布等。使用NumPy可以更高效地进行数值计算,特别是对于大量数据和复杂计算任务,NumPy的运算速度比纯Python代码快得多。它还与其他科学计算库(如SciPy、pandas)和可视化库(如Matplotlib)结合使用,提供了一个完整的科学计算环境。
一、生成
1.1普通生成
import numpy as np
np.arange(0,20) #生成一个一维数组
#结果:array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])
np.arange(0,18,3) #从0到18,左闭右开,步长为3生成一个一维数组
#结果:array([ 0, 3, 6, 9, 12, 15])
np.arange(0,20).reshape(5,4)#生成一个五行四列的数组
'''array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])'''
my_lst1=[1,2,3,4,5]
my_lst2=[6,7,8,9,10]
my_lst3=[11,12,13,14,15]
arr=np.array([my_lst1,my_lst2,my_lst3])#合并成一个二维数组
'''array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])'''
1.2随机生成
np.random.randint(0,100,18).reshape(6,3) #0到100随机18个
#结果:array([[22, 27, 59],
# [78, 1, 67],
# [75, 97, 84],
# [70, 40, 44],
# [25, 0, 43],
# [55, 10, 63]])
np.random.random_sample((2,5)) #0到1之间浮点数
#结果:array([[0.23890907, 0.15979033, 0.35734125, 0.95757058, 0.19518552],
# [0.32116342, 0.59838407, 0.09917026, 0.84594515, 0.80695709]])
1.3其它生成
np.ones((2,5),dtype=int)#生成二行五列全为1,类型为int
#结果:array([[1, 1, 1, 1, 1],
# [1, 1, 1, 1, 1]])
np.ones((2,5))#生成二行五列全为1,类型默认为float
#结果:array([[1., 1., 1., 1., 1.],
# [1., 1., 1., 1., 1.]])
arr_ex=np.random.rand(3,3)#均匀分配,0和1之间
#结果:array([[0.72517444, 0.94190256, 0.11045657],
# [0.45551917, 0.04235148, 0.46287608],
# [0.51471045, 0.13390842, 0.84381079]])
arr_ex=np.random.randn(3,3)#正态分布
#结果:array([[ 1.73429227, -0.84827206, 2.18423689],
# [ 0.10486991, -0.34018986, -1.60033689],
# [ 0.67497866, -1.80770298, -0.79806985]])
二、访问
arr
#结果:array([[ 1, 2, 3, 4, 5],
# [ 6, 7, 8, 9, 10],
# [11, 12, 13, 14, 15]])
arr[2] #访问第二行
#结果:array([11, 12, 13, 14, 15])
arr[1] #访问第一行
#结果:array([ 6, 7, 8, 9, 10])
arr[1,1] #访问第一行第一列
#结果:7
arr1[1:,1:5] #第一行到所有行,第1列到第5列,左闭右开(,前为行 ,后为列)
#结果:array([[ 7, 8, 9, 10],
# [12, 13, 14, 15]])
arr[:,3:] #所有行,第三列到所有列
#结果:array([[ 4, 5],
# [ 9, 10],
# [14, 15]])
三、赋值
arr1
#结果:array([[ 1, 2, 3, 4, 5],
# [ 6, 7, 8, 9, 10],
# [11, 12, 13, 14, 15]])
arr1[1:]=100 #第一行开始到所有行,所有列赋值100
#结果:array([[ 1, 2, 3, 4, 5],
# [100, 100, 100, 100, 100],
# [100, 100, 100, 100, 100]])
arr1[:,1:]=99#所有行,1列到所有列赋值100
#结果:array([[ 1, 99, 99, 99, 99],
# [100, 99, 99, 99, 99],
# [100, 99, 99, 99, 99]])
四、运算
arr1=np.arange(0,10).reshape(2,5)
#结果:array([[0, 1, 2, 3, 4],
# [5, 6, 7, 8, 9]])
arr2=np.arange(10,20).reshape(2,5)
#结果:array([[10, 11, 12, 13, 14],
# [15, 16, 17, 18, 19]])
arr1+arr2 #相加
#结果:array([[10, 12, 14, 16, 18],
# [20, 22, 24, 26, 28]])
arr1*arr2
#结果:array([[ 0, 11, 24, 39, 56],
# [ 75, 96, 119, 144, 171]])
sum(arr1) #求和
#结果:45
五、其它
type(arr)#类型
#结果:numpy.ndarray
arr.shape#形状
#结果:(3, 5)
arr
#结果:array([[ 1, 99, 99, 99, 99],
# [100, 99, 99, 99, 99],
# [100, 99, 99, 99, 99]])
arr<10 #小于10的数
#结果:array([[ True, False, False, False, False],
# [False, False, False, False, False],
# [False, False, False, False, False]])
val=10
arr[arr<val] #找小于val
#结果:array([1])