zoukankan      html  css  js  c++  java
  • numpy模块

    numpy模块

    • 用途:多用于二维数组的处理

    • 对象类型为 <class 'numpy.ndarray'>

    • import numpy as np -----习惯写法

    # 创建一维的ndarray对象
    arr = np.array([1, 2, 3])
    print(arr, type(arr))
    >>>[1 2 3] <class 'numpy.ndarray'>
    
    # 创建二维的ndarray对象
    print(np.array([[1, 2, 3], [4, 5, 6]]))
    >>>[[1 2 3]
     [4 5 6]]
    
    # 创建三维的ndarray对象
    print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
    >>>[[1 2 3]
     	[4 5 6]
     	[7 8 9]]
    
    函数创建数组
    方法 详解
    array() 将列表转换为数组,可选择显式指定dtype
    arange() range的numpy版,支持浮点数
    linspace() 类似arange(),第三个参数为数组长度
    zeros() 根据指定形状和dtype创建全0数组
    ones() 根据指定形状和dtype创建全1数组
    eye() 创建单位矩阵
    empty() 创建一个元素全随机的数组
    reshape() 重塑形状
    常用属性
    属性 解释
    T 数组的转置(对高维数组而言)
    dtype 数组元素的数据类型
    size 数组元素的个数
    ndim 数组的维数
    shape 数组的维度大小(以元组形式)
    astype 类型转换
    方法
    • np.random.shuffle(arr1) ---就地修改,返回行之间打乱顺序

    • 取值

      • arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
        print(arr)
        >>>[[ 1  2  3  4]
         	[ 5  6  7  8]
         	[ 9 10 11 12]]
        
      • # 取所有元素
        print(arr[:, :])
        >>>[[ 1  2  3  4]
        	 [ 5  6  7  8]
         	[ 9 10 11 12]]
        
      • # 取第一行的所有元素
        print(arr[:1, :])
        >>>[[1 2 3 4]]
        
      • # 取第一列的所有元素
        print(arr[:, :1])
        >>>[[1]
         [5]
         [9]]
        
      • # 取第一列的所有元素
        print(arr[(0, 1, 2), 0])
        >>>[1 5 9]
        
      • # 取大于5的元素,返回一个数组
        print(arr[arr > 5])
        >>>[ 6  7  8  9 10 11 12]
        
      • # numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
        print(arr > 5)
        >>>[[False False False False]
         [False  True  True  True]
         [ True  True  True  True]]
        
    • 数组元素的替换

      • 同取值,加赋值,即可将行或者列更换数字
      • 算数运算同理
    • 数组的合并

      • arr1 = np.array([[1, 2], [3, 4], [5, 6]])
        print(arr1)
        arr2 = np.array([[7, 8], [9, 10], [11, 12]])
        print(arr2)
        
      • # 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
        print(np.hstack((arr1, arr2)))
        
      • # 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
        print(np.concatenate((arr1, arr2), axis=1))
        
      • # 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
        print(np.vstack((arr1, arr2)))
        
      • # 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
        print(np.concatenate((arr1, arr2), axis=0))
        
    • 数组的点乘

      • arr1 = np.array([[1, 2, 3], [4, 5, 6]])
        print(arr1.shape)
        arr2 = np.array([[7, 8], [9, 10], [11, 12]])
        print(arr2.shape)
        assert arr1.shape[0] == arr2.shape[1]
        # 2*3·3*2 = 2*2
        print(arr2.shape)
        
    • 数组的转置

      • arr = np.array([[1, 2, 3], [4, 5, 6]])
        print(arr)
        print(arr.transpose())
        print(arr.T)
        
    • 数组的逆

      • arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
        print(arr)
        print(np.linalg.inv(arr))
        # 单位numpy数组的逆是单位numpy数组本身
        arr = np.eye(3)
        print(arr)
        print(np.linalg.inv(arr))
        
  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/agsol/p/11608316.html
Copyright © 2011-2022 走看看