• Python中创建ndarrary的20中方法


    本文完整示例:完整示例代码
    本文介绍了基础的、常用的创建ndarrary的多种方法,附带示例代码。

    一、通过ndarray创建

    import numpy as np
    

    1.1 一维数组

    a = np.array([1, 2, 3])
    a
    
    array([1, 2, 3])
    

    1.2 二维数组

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

    1.3 三维数组

    arr1 = np.array([
        [
            [1, 2, 32, 23],
            [23, 3, 23, 3]
        ],
        [
            [1, 2, 3, 4],
            [23, 3, 4, 32]
        ]
    ])
    print(arr1)
    print(type(arr1))
    arr1
    
    [[[ 1  2 32 23]
      [23  3 23  3]]
    
     [[ 1  2  3  4]
      [23  3  4 32]]]
    <class 'numpy.ndarray'>
    
    
    
    
    
    array([[[ 1,  2, 32, 23],
            [23,  3, 23,  3]],
    
           [[ 1,  2,  3,  4],
            [23,  3,  4, 32]]])
    

    二、创建ndarrary的常见函数

    2. zeros()函数,指定一个维度元组(形状参数),返回全0的ndarrary

    arr2 = np.zeros((2, 4))
    arr2
    
    array([[ 0.,  0.,  0.,  0.],
           [ 0.,  0.,  0.,  0.]])
    

    3. ones()函数,指定一个维度元组(形状参数),返回全1的ndarrary

    arr3 = np.ones((4, 4))
    arr3
    
    array([[ 1.,  1.,  1.,  1.],
           [ 1.,  1.,  1.,  1.],
           [ 1.,  1.,  1.,  1.],
           [ 1.,  1.,  1.,  1.]])
    

    4. empty()函数,指定一个维度元组(形状参数),返回一个值(垃圾值)为被初始化的ndarrary

    arr4 = np.empty((2, 2))
    arr4
    
    array([[  7.89119642e-312,   4.22795269e-307],
           [  9.34608432e-307,   1.11258854e-306]])
    

    三、其他创建ndarrary的方式

    5. numpy.arange([start ], stop[, step ], dtype=None)函数,左开右闭

    arr5 = np.arange(1, 10, 1)
    arr5
    
    array([1, 2, 3, 4, 5, 6, 7, 8, 9])
    

    6. numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)函数, 产生一个等差数列,左闭右闭

    arr6 = np.linspace(0, 4, 5)
    arr6
    
    array([ 0.,  1.,  2.,  3.,  4.])
    

    7. numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)函数,底数默认为10

    arr7 = np.logspace(0, 4, 5, base=2)
    arr7
    
    array([  1.,   2.,   4.,   8.,  16.])
    

    8. numpy.eye(N, M=None, k=0, dtype=<type ‘float’>)函数,生成NxM的单位矩阵

    Return a 2-D array with ones on the diagonal and zeros elsewhere.

    arr8 = np.eye(4, 3)
    arr8
    
    array([[ 1.,  0.,  0.],
           [ 0.,  1.,  0.],
           [ 0.,  0.,  1.],
           [ 0.,  0.,  0.]])
    

    9. numpy.zeros_like(a, dtype=None, order=’K’, subok=True)函数,返回一个与a的形状参数一样的元素全部为0的数组

    Return an array of zeros with the same shape and type as a given array.
    参数subok,是否继承a的数据类型;
    参数order,指定返回的结果在内存中的存储布局,默认是'K',表示尽可能与a相同。

    # 返回一个与arr8形状应的全0数组
    arr9 = np.zeros_like(arr8)
    arr9
    
    array([[ 0.,  0.,  0.],
           [ 0.,  0.,  0.],
           [ 0.,  0.,  0.],
           [ 0.,  0.,  0.]])
    

    10. numpy.ones_like(a, dtype=None, order=’K’, subok=True)函数,

    返回一个与a的形状参数一样且元素全为0的数组

    # 返回一个与ar9形状应的全0数组
    arr10 = np.ones_like(arr9)
    arr10
    
    array([[ 1.,  1.,  1.],
           [ 1.,  1.,  1.],
           [ 1.,  1.,  1.],
           [ 1.,  1.,  1.]])
    

    11. numpy.empty_like(a, dtype=None, order=’K’, subok=True)函数,返回一个与a形状相同且全部值为垃圾值(随机值)的数组

    Return a new array with the same shape and type as a given array.

    arr11 = np.empty_like(np.ones((5,4)))
    arr11
    
    array([[  7.89102294e-312,   6.27463370e-322,   0.00000000e+000,
              0.00000000e+000],
           [  8.45593933e-307,   5.30276956e+180,   7.70748458e-043,
              4.57487963e-071],
           [  3.45618033e-086,   3.35860426e-143,   6.01433264e+175,
              6.93885958e+218],
           [  5.56218858e+180,   3.94356143e+180,   4.75084178e-037,
              1.24689504e-047],
           [  3.85156077e-057,   2.06073242e+184,   4.71530148e-143,
              1.50008929e+248]])
    

    12. numpy.copy(a, order=’K’)函数,返回与a一样的数组

    Return an array copy of the given object.

    # 属于深拷贝,修改复制数组,对原数组没有影响
    arr12 = np.copy(arr11)
    arr12[0, 0] = 1
    arr12
    
    array([[  1.00000000e+000,   6.27463370e-322,   0.00000000e+000,
              0.00000000e+000],
           [  8.45593933e-307,   5.30276956e+180,   7.70748458e-043,
              4.57487963e-071],
           [  3.45618033e-086,   3.35860426e-143,   6.01433264e+175,
              6.93885958e+218],
           [  5.56218858e+180,   3.94356143e+180,   4.75084178e-037,
              1.24689504e-047],
           [  3.85156077e-057,   2.06073242e+184,   4.71530148e-143,
              1.50008929e+248]])
    

    13. numpy.identity(n, dtype=None)函数,返回一个n阶单位方阵

    Return the identity array.

    arr13 = np.identity(4)
    arr13
    
    array([[ 1.,  0.,  0.,  0.],
           [ 0.,  1.,  0.,  0.],
           [ 0.,  0.,  1.,  0.],
           [ 0.,  0.,  0.,  1.]])
    

    14. numpy.fromfunction(function, shape, **kwargs)返回一个数组,元素的值由函数计算,形状由shape元组限制

    注意:参数shape是一个元组,shape元组中的元素个数需要与函数中的参数个数一致,分别表示不同纬度。

    arr20 = np.fromfunction(lambda x, y: x+y, shape=(3, 3))
    print(arr20)
    arr21 = np.fromfunction(lambda x, y, z: x+y+z, shape=(3, 3, 3))
    arr21
    
    [[ 0.  1.  2.]
     [ 1.  2.  3.]
     [ 2.  3.  4.]]
    
    
    
    
    
    array([[[ 0.,  1.,  2.],
            [ 1.,  2.,  3.],
            [ 2.,  3.,  4.]],
    
           [[ 1.,  2.,  3.],
            [ 2.,  3.,  4.],
            [ 3.,  4.,  5.]],
    
           [[ 2.,  3.,  4.],
            [ 3.,  4.,  5.],
            [ 4.,  5.,  6.]]])
    

    15. numpy.mgrid函数

    arr14 = np.mgrid[-1:3:2]    # 表示从-1开始,步长为1,取2个数字
    print(arr14)
    arr15 = np.mgrid[-1:3:2j]  # 当加'j'时,表示左闭右闭,且取到2个数字
    print(arr15)
    arr16 = np.mgrid[-1:3]    # 当指定两个参数时,功能与numpy.arange()函数一样
    print(arr16)
    arr18 = np.mgrid[0:5, 0:5] # 分别在两个维度上做填充
    print(arr18)
    
    [-1  1]
    [-1.  3.]
    [-1  0  1  2]
    [[[0 0 0 0 0]
      [1 1 1 1 1]
      [2 2 2 2 2]
      [3 3 3 3 3]
      [4 4 4 4 4]]
    
     [[0 1 2 3 4]
      [0 1 2 3 4]
      [0 1 2 3 4]
      [0 1 2 3 4]
      [0 1 2 3 4]]]
    

    16. numpy.ogrid函数

    arr19 = np.ogrid[1:2]
    print(arr19)
    arr20 = np.ogrid[0:5, 0:5]
    print(arr20)
    
    [1]
    [array([[0],
           [1],
           [2],
           [3],
           [4]]), array([[0, 1, 2, 3, 4]])]
    

    17. numpy.fromstring(string, dtype=float, count=-1, sep=’‘)函数,从字符串创建一个一维ndarrary

    arr21 = np.fromstring('1 2 3 4', sep=' ')
    arr21
    
    array([ 1.,  2.,  3.,  4.])
    

    18. numpy.fromiter(iterable, dtype, count=-1)函数,返回一个一维数组

    # 需要指定数据类型dtype
    iterable = (i*i for i in range(4))
    arr22 = np.fromiter(iterable,dtype=float)
    arr22
    
    array([ 0.,  1.,  4.,  9.])
    

    四、其他方法

    19. numpy.fromfile(file, dtype=float, count=-1, sep=’‘)函数,从文本文件或二进制文件中创建ndarrary

    20. numpy.loadtxt(fname, dtype=<type ‘float’>, comments=’#’, delimiter=None, converters=None,skiprows=0, usecols=None, unpack=False, ndmin=0)从文件中创建。

    总结
    1. 本文完整示例:完整示例代码
    2. 能力有限,欢迎指错交流;

    欢迎关注个人微信公众号WaltSmithML或新浪微博WaltSmith,公众号提供机器学习、深度学习、Hadoop、Spark、Python、数学知识等免费视频教程。本人主要方向为机器学习和深度学习。非常欢迎一起交流学习哈,除了学习,还可免费帮忙download论文或者书籍哈==============
    ♥♥♥微信公众号♥♥♥微信公众号WaltSmithML二维码♥♥♥♥新浪微博WaltSmith二维码♥♥新浪微博♥♥

  • 相关阅读:
    用javafx webview 打造自己的浏览器
    用cef Python打造自己的浏览器
    无需人工智能和机器学习,实现基于手势识别的计算器
    经常抱怨在公司学不到技术,学的技术没有使用场景怎么破?
    Linux相关集合
    个人博客注册,申请,美化流程
    Django注意知识点(二)
    Django 注意知识点(一)
    Java学习笔记(四)
    Java学习笔记(三)
  • 原文地址:https://www.cnblogs.com/waltsmith/p/8044726.html
Copyright © 2020-2023  润新知