zoukankan      html  css  js  c++  java
  • 4、numpy——创建数组

    1、普通创建——np.array()

    创建数组最简单的方法就是使用array函数。它接收一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。

    1 import numpy as np
    2 a1 = np.array([1, 2, 3])
    3 print(a1)
    4 a2 = np.array([[1, 2, 3], [2, 3, 4]], dtype=np.float)
    5 print(a2, a2.dtype, a2.shape)

     运行结果:

    import numpy as np
    a1 = np.array([1, 2, 3])
    print(a1)
    a2 = np.array([[1, 2, 3], [2, 3, 4]], dtype=np.float)
    print(a2, a2.dtype, a2.shape)

    2、内置方法——np.asarray()  np.fromiter()

    • numpy.asarray # 类似于numpy.array
    • numpy.fromiter # 此函数从任何可迭代对象构建一个ndarray对象,返回一个新的一维数组。

    2.1 numpy.asarray

    语法:

    numpy.asarray(a, dtype = None, order = None)

    参数:

    参数描述
    a 任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表
    dtype 输入出的数组类型,可选
    order ‘C’为按行的 C 风格数组,’F’为按列的 Fortran 风格数组
    2 x = [1, 2, 3]  # x是python的列表类型 不是数组
    3 a1 = np.asarray(x)
    4 print(a1)  # [1  2  3]
    5 y = (4, 5, 6)  # y是python的元组类型
    6 a2 = np.asarray(y, dtype=float, order='F')
    7 print(a2)  # [4. 5. 6.]

    2.2 numpy.formiter

    语法:

    numpy.fromiter(iterable, dtype, count = -1)

    参数:

    参数描述
    iterable 任何可迭代对象
    dtype 返回数组的数据类型
    count 需要读取的数据数量,默认为-1,读取所有数据

    例子:

    1 import numpy as np
    2 x = range(5)
    3 a = np.fromiter(x, float, 5)
    4 print(a)

    结果:

    [0. 1. 2. 3. 4.]

    3 内置方法——np.arange()创建

    语法:
    numpy.arange(start, stop, step, dtype)
    参数:
    start    范围的起始值,默认为0
    stop    范围的终止值(不包含)
    step    两个值的间隔,默认为1
    dtype    返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

    例子:

    import numpy as np
    # 普通用法
    a1 = np.arange(10)
    #含起始点
    a2 = np.arange(10, 20)
    # 带步长
    a3 = np.arange(10, 20, 2)
    # 倒着
    a4 = np.arange(20, 10, -1)
    print(a1, '
    ', a2, '
    ', a3, '
    ', a4)

    执行结果:

    [0 1 2 3 4 5 6 7 8 9] 
     [10 11 12 13 14 15 16 17 18 19] 
     [10 12 14 16 18] 
     [20 19 18 17 16 15 14 13 12 11]

    4、内置方法——等比等差创建

    4.1 np.linspace (起始值,终止值,元素总数):创建一维等差数组。

    语法:

    np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

    参数说明:

    参数描述
    start 序列的起始值
    stop 序列的终止值,如果endpointtrue,该值包含于数列中
    num 要生成的等步长的样本数量,默认为50
    endpoint 该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。
    retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。
    dtype ndarray 的数据类型

    例子:

    1 import numpy as np
    2 a1 = np.linspace(0, 10, 5)
    3 print("等差数组:", a1)
    4 a2 = np.linspace(0, 10, 5, retstep=True, dtype=np.int8)
    5 print(a2)
    6 结果:
    7 等差数组: [ 0.   2.5  5.   7.5 10. ]
    8 (array([ 0,  2,  5,  7, 10], dtype=int8), 2.5

    4.2 np.logspace(起始值,终止值,元素总数):创建一维等比数组。

    语法:

    np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

    base 参数意思是取对数的时候 log 的下标。

    参数描述
    start 序列的起始值为:base ** start
    stop 序列的终止值为:base ** stop。如果endpointtrue,该值包含于数列中
    num 要生成的等步长的样本数量,默认为50
    endpoint 该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。
    base 对数 log 的底数。
    dtype ndarray 的数据类型

    例子:

     1 import numpy as np
     2 # 默认底数是 10
     3 a = np.logspace(1.0,  2.0, num=10)
     4 print(a)
     5 # 将对数的底数设为2
     6 a = np.logspace(0, 9, 10, base=2)
     7 print(a)
     8 结果:
     9 [ 10.          12.91549665  16.68100537  21.5443469   27.82559402
    10   35.93813664  46.41588834  59.94842503  77.42636827 100.        ]
    11 [  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

    5、内置方法创建(特殊构造)

    5.1 np.zeros(shape, dtype=float, order='C'):创建一个全0数组,shape要以元组格式传入

    import numpy as np
    a1 = np.zeros((3, 4), dtype=int)
    print(a1)
    a2 = np.zeros_like(a1)
    print('副本:', a2)
    # 结果:
    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
    副本: [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]

    5.2 np.ones(shape, dtype=None, order='C'):创建一个全1数组,shape要以元组格式传入。

    1 import numpy as np
    2 a1 = np.ones((2, 3), dtype=int)
    3 # 返回具有与给定数组相同的形状和类型的数组
    4 a2 = np.ones_like(a1)
    5 print(a2)

    结果:

    [[1 1 1]
     [1 1 1]]

    5.3 np.empty(shape, dtype=None, order='C'):创建一个拥有趋近0值的数组,shape要以元组格式传入。

    1 import numpy as np
    2 x = np.empty((2, 3), dtype=int, order='C')
    3 print(x)
    4 '''
    5 [[7209029 6422625 6619244]
    6  [    100 6553673       0]]
    7 '''

    5.4 np.eye(N, M=None, k=0, dtype=float, order='C'):创建一个对角矩阵,N代表行,M代表列。其中有个参数k默认值为0,它代表偏移量,正1时向主对角线右上偏移1位,负1时向主对角线左下偏移1位。

    1 import numpy as np
    2 a1 = np.eye(3, 3, dtype=int)
    3 print(a1)
    4 # 对角线下移
    5 a2 = np.eye(3, 3, k=-1, dtype=int)
    6 print('*************************
    ', a2)
    7 # 对角线向上移
    8 a3 = np.eye(3, 3, k=1, dtype=int)
    9 print('*************************
    ', a3)

    结果:

    [[1 0 0]
     [0 1 0]
     [0 0 1]]
    *************************
     [[0 0 0]
     [1 0 0]
     [0 1 0]]
    *************************
     [[0 1 0]
     [0 0 1]
     [0 0 0]]

    5.5 np.full(shape, fill_value, dtype=None, order='C'):创建一个以fill_value进行填充的数组,fill_value为想要填充的值

    import numpy as np
    a1 = np.full((3, 3),fill_value=5)
    print(a1)
    #结果
    [[5 5 5]
     [5 5 5]
     [5 5 5]]

    6、从随机函数创建

    随机生成数组需要考虑的因素:

    1. 数据范围:区间,整数、小数
    2. 数据分布:均匀分布、正态分布、指定分布
    3. 数据形状:size

    常用的随机函数

    函数解释
    rand(d0,d1,…) [0,1]均匀分布
    randint(low,high,size) [low,high)整数均匀分布
    choice(a,size,replace,p) 指定数组指定概率分布
    randn(d0,d1,…) 标准正态分布

     [0,1]均匀分布

    import numpy as np
    a1 = np.random.rand(4, 4)
    print(a1)
    》》》
    [[0.77052073 0.68006097 0.07924217 0.81588193]
     [0.99678088 0.3900633  0.64834814 0.62874627]
     [0.15473904 0.24785919 0.75724866 0.32946373]
     [0.99667109 0.12276489 0.26126159 0.36696264]] 0.7705207279750877

     [a,b)整数均匀分布

    1 import numpy as np
    2 a = np.random.randint(2, 5, (3, 3))
    3 print(a)
    4 >>>
    5 [[3 4 2]
    6  [4 2 2]
    7  [2 4 4]]

    指定数组指定概率分布

    import numpy as np
    a = np.random.choice([1, 2, 3, 4], size=(3, 4), replace=True, p=[0.1, 0.2, 0.3, 0.4])
    print(a)
    >>>
    [[2 2 3 1]
     [4 4 4 3]
     [1 2 1 2]]

    N(0,1)标准正态分布

    1 import numpy as np
    2 a = np.random.randn(4, 4)
    3 print(a)
    4 >>>
    5 [[-1.94776705  1.82906205  0.45956222 -1.09130521]
    6  [ 1.52936905 -2.38259868 -1.53460647  1.95028102]
    7  [ 0.7148325   0.40825257  0.15732141 -0.45423096]
    8  [-0.20530692  1.34386361  1.13883039 -0.14897777]]
  • 相关阅读:
    C语言本身并不提供输入输出语句
    大数据
    kdd cup 论文
    决策树比较
    推荐系统
    geohash
    MySQLdb 安装
    天池大数据比赛
    逻辑回归
    矩阵分解
  • 原文地址:https://www.cnblogs.com/weststar/p/11571436.html
Copyright © 2011-2022 走看看