Numpy库

发布时间:2023年12月18日

目录

介绍:?

一、生成

1.1普通生成

?1.2随机生成

?1.3其它生成

二、访问

?三、赋值

四、运算

?五、其它

介绍:?

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

?

?

文章来源:https://blog.csdn.net/qq_74156152/article/details/135005793
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。