• numpy 库简单使用


    numpy 库简单使用

    一、numpy库简介

      Python标准库中提供了一个array类型,用于保存数组类型的数据,然而这个类型不支持多维数据,不适合数值运算。作为Python的第三方库numpy便有了用武之地。

      numpy库处理的最基础数据类型是用同种元素构成的多维数组(ndarray),简称数组。数组中所有元素的类型必须相同,数组中元素可以用整数索引,序号从0开始。ndarray类型的维度叫作轴(axes),轴的个数叫做秩(rank)。

    二、numpy库下载

    pip install numpy

    三、导入库函数

    import numpy as np

    四、库函数基本使用

    1. 创建数组的函数 (ndarray类型)

    函数

    说明

    np.array([ x, y, z], dtype = int)

    从列表或数组中创建数组

    np.arange(x, y, i)

    创建一个由x到y,以i为步长的数组

    np.linspace(x, y, n)

    创建一个由x到y,等分成n个元素的数组

    np.indices((m, n))

    创建一个m行n列的矩阵(3维数组)

    np.random.rand(m, n)

    创建一个m行n列的随机数组

    np.ones((m,n), dtype)

    创建一个m行n列的全1数组,dtype为数据类型

    np.zeros((m,n), dtype)

    创建一个m行n列的全0数组,dtype为数据类型

    np.empty((m,n), dtype)

    创建一个m行n列的空数组,dtype为数据类型

    复制代码
     1 import numpy as np
     2 
     3 ''' numpy --> array() '''
     4 a1 = np.array([1,2,3,5,8,13,21,34,55,89], dtype = int) # 由列表创建数组
     5 array_ = (2.3,8,10/3,5.0,1/7)   # 创建元组
     6 a2 = np.array(array_)   # 由元组创建数组
     7 print('numpy --> array():
    ',a1,'
    ',a2)
     8 
     9 ''' numpy --> arange() '''
    10 arange_1 = np.arange(1,30,4)
    11 arange_2 = np.arange(1,3,0.4)
    12 print('numpy --> arange():
    ',arange_1,'
    ',arange_2)
    13 
    14 ''' numpy --> linspace() '''
    15 lins_1 = np.linspace(1,10,10)
    16 lins_2 = np.linspace(1,10,9, dtype = int)
    17 print('numpy --> linspace():
    ',lins_1,'
    ',lins_2)
    18 
    19 ''' numpy --> random.rand() '''
    20 rand_ = np.random.rand(3,4)
    21 print('numpy --> random.rand():
    ',rand_)
    22 
    23 ''' numpy --> ones() '''
    24 ones_1 = np.ones((3,4))      # 默认为float
    25 ones_2 = np.ones((3,4),dtype = int)
    26 print('numpy --> ones():
    ',ones_1,'
    ',ones_2)
    27 
    28 ''' numpy --> zeros() '''
    29 zeros_1 = np.zeros((2,3))
    30 zeros_2 = np.zeros((2,3), dtype = int)
    31 print('numpy --> zeros():
    ',zeros_1,'
    ',zeros_2)
    复制代码

    2. ndarray类型的常用属性

    属性

    说明

    ndarray.ndim

    返回数组轴的个数,即数组的秩

    ndarray.shape

    返回数组在每个维度上大小的整数元组

    ndarray.size

    返回数组元素的总个数

    ndarray.dtype

    返回数组元素的数据类型

    ndarray.itemsize

    返回数组元素的字节大小

    ndarray.data

    返回数组元素的缓存区地址

    ndarray.flat

    数组元素的迭代器

    复制代码
     1 import numpy as np
     2 a = np.indices((5,8)) # 创建一个m行n列的矩阵
     3 print("数组a的秩:",a.ndim)
     4 print("数组a各维度的大小:",a.shape)
     5 print("数组a元素的总个数:",a.size)
     6 print("数组a元素的数据类型:",a.dtype)
     7 print("数组a元素的字节大小:",a.itemsize)
     8 print("数组a元素的缓存区地址:",a.data)
     9 print("数组a元素的迭代器:",a.flat)
    10 print("数组a的元素:
    ",a)
    复制代码

    3. ndarray类型的形态操作方法

    操作方法

    说明

    ndarray.reshape(n, m)

    返回一个维度为(n, m)的数组副本

    ndarray.resize(new_shape)

    修改数组的维度大小

    ndarray.swapaxes(ax1, ax2)

    调换数组ax1维度与ax2维度,返回调换后的数组

    ndarray.flatten()

    对数组进行降维,返回一维数组

    ndarray.ravel()

    对数组进行降维,返回数组的一个视图

    复制代码
     1 import numpy as np
     2 a = np.arange(20)
     3 print('(1) 创建一维数组a:
    ',a)
     4 b = a.reshape(2,10)
     5 print('(2) 由a创建(2,10)的数组b:
    ',b)
     6 a.resize(4,5)
     7 print('(3) 修改数组a为(4,5):','Shape of a:',a.shape,'
    ',a)
     8 c = a.swapaxes(0,1)
     9 print('(4) 调换数组a第1维度与第2维度得到数组c:(5,4)','Shape of c:',c.shape,'
    ',c)
    10 d = a.flatten()
    11 print('(5) 对数组a降维,得到一维数组d:','Shape of d:',d.shape,'
    ',d)
    12 e = a.ravel()
    13 print('(6) 对数组a降维,得到数组a的视图e','Shape of e:',e.shape,'
    ',e)
    复制代码

    4. ndarray类型的索引与切片方法

    方法

    说明

    x [i]

    索引数组x的第i个元素

    x [-i]

    从后往前索引数组x的第i个元素

    x [n : m]

    从前往后索引数组x,不包含第m个元素

    x [-m : -n]

    从后往前索引数组x,结束位置为n

    x [n : m: i]

    以i为步长索引数组x

    复制代码
    1 import numpy as np
    2 a = np.arange(8)
    3 print('a:',a)
    4 print('a[4]:',a[4])
    5 print('a[-6:-3]:',a[-6:-3])
    6 print('a[1:6:2]:',a[1:6:2])
    复制代码

    5. ndarray类型的算术运算函数

    函数

    说明

    np.add(x1, x2 [,y])

    y = x1 + x2

    np.subtract(x1, x2 [,y])

    y = x1 - x2

    np.multiply(x1, x2 [,y])

    y = x1 * x2

    np.divide(x1, x2 [,y])

    y = x1 / x2

    np.floor_divide(x1, x2 [,y])

    y = x1 // x2

    np.negative(x [,y])

    y = -x

    np.power(x1, x2 [,y])

    y = x1 ** x2

    np.remainder(x1, x2 [,y])

    y = x1 % x2

    复制代码
    1 import numpy as np
    2 A1 = np.arange(1,9)
    3 A2 = np.arange(1,30,4)
    4 
    5 print('A1:',A1)
    6 print('A2:',A2)
    7 print('A2-A1:',np.subtract(A2,A1))
    8 print('A2//A1:',np.floor_divide(A2,A1))
    9 print('A2%A1:',np.remainder(A2,A1))
    复制代码

    6. ndarray类型的比较运算函数

    函数

    说明

    np.equal(x1, x2 [,y])

    y = x1 == x2

    np.not_equal(x1, x2 [,y])

    y = x1 != x2

    np.less(x1, x2 [,y])

    y = x1 < x2

    np.less_equal(x1, x2 [,y])

    y = x1 <= x2

    np.greater(x1, x2 [,y])

    y = x1 > x2

    np.greater_equal(x1, x2 [,y])

    y = x1 >= x2

    np.where(condition [x, y])

    根据条件判断输出x或y

    复制代码
     1 import numpy as np
     2 A1 = np.arange(1,9)
     3 A2 = np.arange(1,30,4)
     4 
     5 print('A1:',A1)
     6 print('A2:',A2)
     7 print('A1 != A2:',np.not_equal(A1,A2))
     8 print('A1 <= A2:',np.less_equal(A1,A2))
     9 print('Use of where_1:',np.where(A1>=5,'Y','N'))
    10 print('Usage as much of where:{}'.format('Y' if A1[3]>=5 else 'N'))
    复制代码

    7. ndarray类型的其他运算函数

    函数

    说明

    np.abs(x)

    返回数组x每个元素的绝对值

    np.sqrt(x)

    返回数组x每个元素的平方根

    np.square(x)

    返回数组x每个元素的平方

    np.sign(x)

    返回数组x每个元素的符号:1(+)、0、-1(-)

    np.ceil(x)

    返回大于或等于数组x每个元素的最小值

    np.floor(x)

    返回小于或等于数组x每个元素的最大值

    np.rint(x [,out])

    返回数组x每个元素最接近的整数

    np.exp(x [,out])

    返回数组x每个元素的指数值

    np.log(x) / np.log2(x) / np.log10(x)

    返回数组x每个元素相应的对数(e、2、10)

    复制代码
    1 import numpy as np
    2 A1 = np.arange(1,9)
    3 A2 = np.arange(1,30,4)
    4 
    5 print('A1:',A1)
    6 print('A2:',A2)
    7 print('A2的平方根:',np.sqrt(A2))
    8 print('A1的平方:',np.sqrt(A1))
    9 print('A2 2的对数:',np.log2(A2))
    复制代码
  • 相关阅读:
    Java Web总结十Jsp
    当前结果
    QFontMetrics的一个问题
    设想的用户交互流程
    多视图工作
    改进函数、变量的表示
    接口测试Session/Cookie笔记(二)
    接口测试笔记(一)
    创业公司心力交瘁
    禅道BUG管理工具使用链接存储
  • 原文地址:https://www.cnblogs.com/elbow/p/10765333.html
Copyright © 2020-2023  润新知