Python Numpy 基本属性、常用方法

1. 基本属性


No.属性名描述
01shape向量、矩阵的结构
02dtype向量、矩阵的数据类型
03ndim向量、矩阵维度
04size向量、矩阵的元素个数
  • 测试代码

    import numpy as np
    
    # 定义数据
    a = np.arange(15).reshape(3, 5)
    
    # 基本属性
    print(a.shape)
    print(a.dtype)
    print(a.ndim)
    print(a.size)
    
  • 结果

    (3, 5)
    int32
    2
    15
    

2. 常用数学运算


1. 基本运算
  • 测试代码

    import numpy as np
    
    # 定义数据
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[10, 20], [30, 40]])
    
    # 基本运算
    # 矩阵运算
    print(b - a, '\n')
    # 矩阵与常数运算
    print(b - 1, '\n')
    # 矩阵次幂运算
    print(a ** 2)
    
  • 结果

    [[ 9 18]
     [27 36]]
    
    [[ 9 19]
     [29 39]]
    
    [[ 1  4]
     [ 9 16]]
    
2. 矩阵乘法(2种)
  • 测试代码

    import numpy as np
    
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[10, 20], [30, 40]])
    
    # *号乘法,对应位置数据进行相乘
    print(a * b, '\n')
    
    # 矩阵乘法
    print(a.dot(b)) # print(np.dot(a, b))
    
  • 结果

    [[ 10  40]
     [ 90 160]]
    
    [[ 70 100]
     [150 220]]
    
3. 最大值、最小值
  • 测试代码

    import numpy as np
    
    a = np.array([[10, 20], [30, 40]])
    
    # 最大值
    print(a.max())
    # 最小值
    print(a.min())
    
  • 结果

    40
    10
    
4. 按行、列求和
  • 测试代码

    import numpy as np
    
    a = np.array([[10, 20], [30, 40]])
    
    # 按行求和
    print(a.sum(axis=1), '\n')
    
    # 按列求和
    print(a.sum(axis=0))
    
  • 结果

    [30 70]
    
    [40 60]
    
5. 比较运算
  • 测试代码

    import numpy as np
    
    a = np.array([[10, 20, 80], [30, 40, 60]])
    
    # 判断是否等于10
    print(a == 10, '\n')
    # 判断是否大于30
    print(a > 35, '\n')
    
    # 可以使用判断结果作为索引得到数据
    dataGt35 = (a > 35)
    print(a[dataGt35])
    
  • 结果

    [[ True False False]
     [False False False]]
    
    [[False False  True]
     [False  True  True]]
    
    [80 40 60]
    
6. 向上、向下取整
  • 测试代码

    import numpy as np
    
    a = 10 * np.random.random((2, 3))
    print(a, '\n')
    
    # 向上取整
    print(np.ceil(a), '\n')
    # 向下取整
    print(np.floor(a))
    
  • 结果

    [[4.57151067 9.42335419 8.83125138]
     [7.55599306 7.10207961 6.26744524]]
    
    [[ 5. 10.  9.]
     [ 8.  8.  7.]]
    
    [[4. 9. 8.]
     [7. 7. 6.]]
    
7. 其他常用运算(e的次幂、开平方)
  • 测试代码

    import numpy as np
    
    a = np.array([[1, 2], [3, 4]])
    
    # e的次幂操作
    print(np.exp(a), '\n')
    
    # 开平方操作
    print(np.sqrt(a))
    
  • 结果

    [[ 2.71828183  7.3890561 ]
     [20.08553692 54.59815003]]
    
    [[1.         1.41421356]
     [1.73205081 2.        ]]
    

3. 与、或操作


  • 测试代码

    import numpy as np
    
    a = np.array([[10, 20], [30, 40]])
    
    # 与操作
    print((a > 15) & (a < 35), '\n')
    print((a > 15) & (a < 35), '\n')
    # 或操作
    print((a == 10) | (a < 30))
    
  • 结果

    [[False  True]
     [ True False]]
    
    [[ True  True]
     [False False]]
    

4. 常用方法


No.方法描述举例
01ravel将矩阵转换成向量a.ravel()
02T转置矩阵a.T
03reshape重新定义向量、矩阵结构a.reshape(3, 4)
04hstack按行进行矩阵拼接np.hstack((a, b))
05vstack按列进行矩阵拼接np.vstack((a, b))
06hsplit按行切分矩阵np.hsplit(a, 3)
07vsplit按列切分矩阵np.vsplit(a, 3)
08tile使用现有矩阵扩展矩阵np.tile(a, (3, 5))
1. ravel
  • 测试代码

    import numpy as np
    
    a = np.array([[10, 20], [30, 40]])
    print(a.ravel())
    
  • 结果

    [10 20 30 40]
    
2. T
  • 测试代码

    import numpy as np
    
    a = np.array([[10, 20], [30, 40]])
    print(a.T)
    
  • 结果

    [[10 30]
     [20 40]]
    
3. reshape
  • 测试代码

    import numpy as np
    
    a = np.arange(15)
    
    # 将向量a重新定义结构为(3, 5)的矩阵
    print(a.reshape((3, 5)), '\n')
    # 如果设置-1,则表示自动计算数值
    print(a.reshape((5, -1)))
    
  • 结果

    [[ 0  1  2  3  4]
     [ 5  6  7  8  9]
     [10 11 12 13 14]]
    
    [[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]
     [ 9 10 11]
     [12 13 14]]
    
4. 矩阵拼接
  • 测试代码

    import numpy as np
    
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6], [7, 8]])
    
    # 横向拼接
    print(np.hstack((a, b)), '\n')
    # 纵向拼接
    print(np.vstack((a, b)))
    
  • 结果

    [[1 2 5 6]
     [3 4 7 8]]
    
    [[1 2]
     [3 4]
     [5 6]
     [7 8]]
    
5. 矩阵切分
  • 测试代码

    import numpy as np
    
    a = np.arange(27).reshape(3, 9)
    
    # 按行切分
    print(np.hsplit(a, 3), '\n')
    # 自定义切分位置
    print(np.hsplit(a, (3, 5, 7)), '\n')
    
    b = a.T
    
    # 按列切分
    print(np.vsplit(b, 3))
    
  • 结果

    [array([[ 0,  1,  2],
       [ 9, 10, 11],
       [18, 19, 20]]), array([[ 3,  4,  5],
       [12, 13, 14],
       [21, 22, 23]]), array([[ 6,  7,  8],
       [15, 16, 17],
       [24, 25, 26]])]
    
    [array([[ 0,  1,  2],
           [ 9, 10, 11],
           [18, 19, 20]]), array([[ 3,  4],
           [12, 13],
           [21, 22]]), array([[ 5,  6],
           [14, 15],
           [23, 24]]), array([[ 7,  8],
           [16, 17],
           [25, 26]])]
    
    [array([[ 0,  9, 18],
           [ 1, 10, 19],
           [ 2, 11, 20]]), array([[ 3, 12, 21],
           [ 4, 13, 22],
           [ 5, 14, 23]]), array([[ 6, 15, 24],
           [ 7, 16, 25],
           [ 8, 17, 26]])]
    
6. tile
  • 测试代码

    import numpy as np
    
    a = np.arange(6).reshape(2, 3)
    
    # 扩展矩阵
    print(np.tile(a, (2, 2)))
    
  • 结果

    [[0 1 2 0 1 2]
     [3 4 5 3 4 5]
     [0 1 2 0 1 2]
     [3 4 5 3 4 5]]
    

转载于:https://my.oschina.net/shadowolf/blog/1839321

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值