• numpy的基本操作


    创建数组.

    2个0的一维数组

    np.zeros((2)) 
    # array([0., 0.])
    
    • 1
    • 2

    6个0的二维数组.

    np.zeros((2, 3)) # 
    # array([[0., 0., 0.],
    #      [0., 0., 0.]])
    
    • 1
    • 2
    • 3

    24个1的三维数组.

    np.ones((2, 3, 4)) #
    #array([[[1., 1., 1., 1.],
     #       [1., 1., 1., 1.],
      #      [1., 1., 1., 1.]],
    #
     #      [[1., 1., 1., 1.],
      #      [1., 1., 1., 1.],
       #     [1., 1., 1., 1.]]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    创建初始值随机的一维数组

    np.empty((3)) #
    # array([7.74860419e-304, 7.74860419e-304, 7.74860419e-304])
    
    • 1
    • 2

    创建3 × 3的单位矩阵.

    np.eye(3) #
    #array([[1., 0., 0.],
    #      [0., 1., 0.],
    #      [0., 0., 1.]])
    
    • 1
    • 2
    • 3
    • 4

    二维数组.

    np.array([[1,2], [3,4]]) #
    # array([[1, 2],
    #      [3, 4]])
    
    • 1
    • 2
    • 3

    一维布尔数组.

    np.array([1,0], dtype=np.bool) # 
    # array([ True, False])
    
    • 1
    • 2

    三维数组

    np.array([[[1,2], [3,4]], [[5,6],[7,8]]]) # .
    # array([[[1, 2],
    #       [3, 4]],
    #
    #      [[5, 6],
    #       [7, 8]]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    数值全部为7的2乘3二维数组.

    np.full((2,3), 7)# 
    # array([[7, 7, 7],
    3      [7, 7, 7]])
    
    • 1
    • 2
    • 3

    从0到3的一维数组

    np.arange(4) #.
    # array([0, 1, 2, 3])
    
    • 1
    • 2

    从5(包含)到25(不包含),步幅为5的一维数组.

    np.arange(5, 25, 5) #
    # array([ 5, 10, 15, 20])
    
    • 1
    • 2

    创建从0(包含)到9(包含),长度为10的等差数列.

    np.linspace(0, 9, 10) # 
    # array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
    
    • 1
    • 2

    从区间[0.0,1.0)中随机抽取6个数,填入2乘3的数组中.

    np.random.random((2, 3))# 
    # array([[0.26094114, 0.33261952, 0.8888425 ],
    #      [0.63739788, 0.44335024, 0.5220761 ]])
    
    • 1
    • 2
    • 3

    创建长度为10的从0到2π余弦函数值的等差数列

    np.cos(np.linspace(0, 2*np.pi, 10))
    #
    # array([ 1.        ,  0.76604444,  0.17364818, -0.5       , -0.93969262,
    #      -0.93969262, -0.5       ,  0.17364818,  0.76604444,  1.        ])
    
    • 1
    • 2
    • 3
    • 4

    数组的结构

    数组的维度.

    a.shape
    # (10,)
    
    • 1
    • 2

    数组的长度.

    len(a)
    # 10
    
    • 1
    • 2

    数组维度的大小

    a.ndim
    # 1
    
    • 1
    • 2

    数组中元素的个数

    a.size
    # 10
    
    • 1
    • 2

    数组数据的类型

    a.dtype
    # 'float64'
    
    • 1
    • 2

    数组数据类型的名称

    a.dtype.name
    
    • 1

    将数据类型转换为其它类型.

    a.astype('int')
    a
    # array([ 1.        ,  0.76604444,  0.17364818, -0.5       , -0.93969262,       -0.93969262, -0.5       ,  0.17364818,  0.76604444,  1.        ])
    
    • 1
    • 2
    • 3

    数据类型
    np.int64 | 64位整数型.
    np.float32 | 标准双精度浮点型.
    np.complex | 由128位浮点代表的复数.
    np.bool | 布尔型.
    np.object | Python中object类型.
    np.nan | NA值,为浮点型

    文件读取

    以npz格式将数组保存到本地

    np.save(‘my_arr’, arr)
    
    • 1

    以文本格式将数组到本地

    np.savetxt(‘my_arr.txt’, arr)
    
    • 1

    读取本地NumPy数组文件

    np.load(‘my_arr.npy’)
    
    • 1

    读取本地文本数组文件

    np.loadtxt(‘my_arr.txt’)
    
    • 1

    将csv文件转换成NumPy数组

    np.genfromtxt(file.csv’,delimiter=,)
    
    • 1

    数组切片

    arr = np.arange(0,100).reshape(20,5)
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19],
           [20, 21, 22, 23, 24],
           [25, 26, 27, 28, 29],
           [30, 31, 32, 33, 34],
           [35, 36, 37, 38, 39],
           [40, 41, 42, 43, 44],
           [45, 46, 47, 48, 49],
           [50, 51, 52, 53, 54],
           [55, 56, 57, 58, 59],
           [60, 61, 62, 63, 64],
           [65, 66, 67, 68, 69],
           [70, 71, 72, 73, 74],
           [75, 76, 77, 78, 79],
           [80, 81, 82, 83, 84],
           [85, 86, 87, 88, 89],
           [90, 91, 92, 93, 94],
           [95, 96, 97, 98, 99]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    提取第5个(行)的元素

    arr[4]
    # array([20, 21, 22, 23, 24])
    
    • 1
    • 2

    提取第2行第1列的元素

    arr[1,0]
    # 5
    
    • 1
    • 2

    提取位于第一行第二列和第三行第四列的两个元素

    arr[[0,2],[1,3]]
    # array([ 1, 13])
    
    • 1
    • 2

    提取前5行的元素

    arr[:5]
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19],
           [20, 21, 22, 23, 24]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    提取第1行到第5行元素

    arr[0:5]
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19],
           [20, 21, 22, 23, 24]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    提取第1,3,5,7,9行元素

    arr[0:10:2]
    array([[ 0,  1,  2,  3,  4],
           [10, 11, 12, 13, 14],
           [20, 21, 22, 23, 24],
           [30, 31, 32, 33, 34],
           [40, 41, 42, 43, 44]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    反序数组

    arr[::-1]
    array([[95, 96, 97, 98, 99],
           [90, 91, 92, 93, 94],
           [85, 86, 87, 88, 89],
           [80, 81, 82, 83, 84],
           [75, 76, 77, 78, 79],
           [70, 71, 72, 73, 74],
           [65, 66, 67, 68, 69],
           [60, 61, 62, 63, 64],
           [55, 56, 57, 58, 59],
           [50, 51, 52, 53, 54],
           [45, 46, 47, 48, 49],
           [40, 41, 42, 43, 44],
           [35, 36, 37, 38, 39],
           [30, 31, 32, 33, 34],
           [25, 26, 27, 28, 29],
           [20, 21, 22, 23, 24],
           [15, 16, 17, 18, 19],
           [10, 11, 12, 13, 14],
           [ 5,  6,  7,  8,  9],
           [ 0,  1,  2,  3,  4]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    提取前2行的第3列的元素

    arr[0:2,2]
    # array([2, 7])
    
    • 1
    • 2

    提取所有行和所有列

    arr[:,:]
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19],
           [20, 21, 22, 23, 24],
           [25, 26, 27, 28, 29],
           [30, 31, 32, 33, 34],
           [35, 36, 37, 38, 39],
           [40, 41, 42, 43, 44],
           [45, 46, 47, 48, 49],
           [50, 51, 52, 53, 54],
           [55, 56, 57, 58, 59],
           [60, 61, 62, 63, 64],
           [65, 66, 67, 68, 69],
           [70, 71, 72, 73, 74],
           [75, 76, 77, 78, 79],
           [80, 81, 82, 83, 84],
           [85, 86, 87, 88, 89],
           [90, 91, 92, 93, 94],
           [95, 96, 97, 98, 99]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    提取第5行的元素

    arr[4,:]
    # array([20, 21, 22, 23, 24])
    
    • 1
    • 2

    提取所有小于50的元素

    arr[arr<50]
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
           17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
           34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49])
    
    • 1
    • 2
    • 3
    • 4

    数组的操作

    arr = np.array([[1,2],[3,4]])
    # array([[1, 2],[3, 4]])
    
    • 1
    • 2

    数组转置

    arr.T
    # array([[1, 3],[2, 4]])
    
    • 1
    • 2

    扁平化数组

    arr.ravel()
    # array([1, 2, 3, 4])
    
    • 1
    • 2

    重塑数组, 元素个数需保持一致

    arr.reshape(4,1)
    array([[1],
           [2],
           [3],
           [4]])
    
    • 1
    • 2
    • 3
    • 4
    • 5

    重塑原数组,元素个数可不同

    np.resize(arr,(2, 3))
    array([[1, 2, 3],
           [4, 1, 2]])
    
    • 1
    • 2
    • 3

    扁平化后插入新数组[[5,6]],若指定axis参数,则会按指定方向插入

    np.append(arr,[[5,6]])
    # array([1, 2, 3, 4, 5, 6])
    
    • 1
    • 2

    指定axis参数

    np.append(arr,3,[[5,6]])
    # array([1, 2, 3, 5, 6, 4])
    
    • 1
    • 2

    扁平化后按索引删除元素,若指定axis参数则会按维度方向删除

    np.delete(arr,1)
    # array([1, 3, 4])
    
    • 1
    • 2

    按指定维度方向(需已存在)合并多个数组

    np.concatenate((arr,arr),axis=1)
    array([[1, 2, 1, 2],
           [3, 4, 3, 4]])
    
    • 1
    • 2
    • 3

    按水平方向合并多个数组

    np.hstack((arr,arr))
    array([[1, 2, 1, 2],
           [3, 4, 3, 4]])
    
    • 1
    • 2
    • 3

    按竖直方向合并多个数组

    np.vstack((arr,arr))
    array([[1, 2],
           [3, 4],
           [1, 2],
           [3, 4]])
    
    • 1
    • 2
    • 3
    • 4
    • 5

    按第0维度方向将数组切成2份

    np.split(arr,2)
    [array([[1, 2]]), array([[3, 4]])]
    
    • 1
    • 2

    按第1维度方向将数组切成2份

    np.split(arr,2,1)
    [array([[1],
            [3]]),
     array([[2],
            [4]])]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    将数组转换成列表

    arr.tolist()
    [[1, 2], [3, 4]]
    
    • 1
    • 2

    数组的运算

    np.nan is np.nan
    # True
    
    • 1
    • 2
    np.nan == np.nan
    # False
    
    • 1
    • 2
    a = np.array([1,2])
    b=np.array([2,3])
    
    • 1
    • 2

    逐元素比较,返回等维度布尔数组

    a == b
    # array([False, False])
    
    • 1
    • 2

    逐元素比较,返回等维度布尔数组

    a<2
    # array([ True, False])
    
    • 1
    • 2

    逐元素进行加、减、乘、除运算

    a+b
    # array([3, 5])
    
    • 1
    • 2
    a-b
    array([-1, -1])
    
    • 1
    • 2
    a*b
    # array([2, 6])
    
    • 1
    • 2
    a/b
    # array([0.5       , 0.66666667])
    
    • 1
    • 2

    数量积运算

    a.dot(b)
    # 8
    
    • 1
    • 2

    最大

    np.max(a)
    # 2
    
    • 1
    • 2

    最小

    np.min(a)
    # 1
    
    
    • 1
    • 2
    • 3

    均值

    np.mean(a)
    # 1.5
    
    • 1
    • 2

    标准差

    np.std(a)
    # 0.5
    
    • 1
    • 2

    按指定维度方向求最大值

    a.max(axis=0)
    # 2
    
    • 1
    • 2

    按指定维度方向对数组进行升序排列

    a.sort(axis=0)
    # array([1, 2])
    
    • 1
    • 2

    深拷贝数组

    a.copy() # array([1, 2])
    
    
    • 1
    • 2

    浅拷贝数组

    np.copy(a) # array([1, 2])
    
    • 1

    创建数组的view

    a.view() # array([1, 2])
    
    • 1

    数组间整体比较,返回单个布尔值

    np.array_equal(a,a)
    # True
    
    • 1
    • 2

    做幂

    np.exp(a)
    # array([2.71828183, 7.3890561 ])
    
    • 1
    • 2

    开平方

    np.sqrt(a)
    # array([1.        , 1.41421356])
    
    • 1
    • 2

    正弦

    np.sin(a)
    # array([0.84147098, 0.90929743])
    
    • 1
    • 2

    自然对数运算

    np.log(a)
    # array([0.        , 0.69314718])
    
    • 1
    • 2
  • 相关阅读:
    实现一个简单的长轮询
    Word控件Spire.Doc 【文本】教程(17) ;在Word中设置文本方向
    Seata部署TC服务实现高可用和异地容灾
    AI绘画开源王者归来,Stable Diffusion 3.5 AI绘画模型开源发布
    人脸识别之light_cnn
    Spring Boot日志配置及输出
    【北京迅为】《iTOP-3588开发板快速测试手册》第五章 debian系统功能测试
    软件测试—测试用例的设计
    使用 PMML 实现模型融合及优化技巧
    Spring Security使用总结四,此篇没有任何营养,就是将注册服务补全
  • 原文地址:https://blog.csdn.net/weixin_47219875/article/details/126805908