• 01.Numpy数组的基本应用


    1. 数组的创建

    2. 数组的访问

    3. 数组的合并

    4. 数组的分割

    数组创建

    >>> import numpy as np
    
    创建一维数组
    >>> x = np.arange(10)
    >>> x
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    创建二维数组
    >>> X = np.arange(10).reshape(2, 5)
    >>> X
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    查看数组为维度
    >>> x.ndim
    1
    >>> X.ndim
    2
    
    查看数组的形状
    >>> X.shape
    (2, 5)

    数组访问

    >>> X
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    >>> X[0]
    array([0, 1, 2, 3, 4])
    
    >>> X[1,1]
    6
    
    >>> X[0:4]
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    >>> X[0:1]
    array([[0, 1, 2, 3, 4]])
    
    >>> X[0:2]
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    >>> X[:2, :2]
    array([[0, 1],
           [5, 6]])
    
    >>> X[:, 1]
    array([1, 6])
    
    >>> X[1, :]
    array([5, 6, 7, 8, 9])
    
    创建子数组
    >>> subX = X[:2, :2]
    >>> subX
    array([[0, 1],
           [5, 6]])
    
    子数组修改
    >>> subX[0, 0] = 100
    >>> subX
    array([[100,   1],
           [  5,   6]])
    >>> X
    array([[100,   1,   2,   3,   4],
           [  5,   6,   7,   8,   9]])
    
    如何使子数组的修改不影响原数组
    >>> subX = X[:2, :2].copy()
    >>> subX
    array([[100,   1],
           [  5,   6]])
    >>> subX[0, 1] = 200
    >>> subX
    array([[100, 200],
           [  5,   6]])
    >>> X
    array([[100,   1,   2,   3,   4],
           [  5,   6,   7,   8,   9]])

    数组形状

    >>> x
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> x.reshape(2, 5)
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    >>> x.reshape(5, 2)
    array([[0, 1],
           [2, 3],
           [4, 5],
           [6, 7],
           [8, 9]])
    >>> A = x.reshape(5, 2)
    >>> A
    array([[0, 1],
           [2, 3],
           [4, 5],
           [6, 7],
           [8, 9]])
    >>> x.reshape(10, -1)
    array([[0],
           [1],
           [2],
           [3],
           [4],
           [5],
           [6],
           [7],
           [8],
           [9]])
    >>> x.reshape(-1, 10)
    array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

    数组合并

    >>> a = np.array([1,2,3])
    >>> b = np.array([4,5,6])
    >>> a,b
    (array([1, 2, 3]), array([4, 5, 6]))
    
    >>> np.concatenate([a,b])
    array([1, 2, 3, 4, 5, 6])
    
    >>> c = np.array([7,8,9])
    >>> np.concatenate([a,b,c])
    array([1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    >>> A = np.array([[1,2,3],[4,5,6]])
    >>> np.concatenate([A, A])
    array([[1, 2, 3],
           [4, 5, 6],
           [1, 2, 3],
           [4, 5, 6]])
    >>> np.concatenate([A, A], axis=0)
    array([[1, 2, 3],
           [4, 5, 6],
           [1, 2, 3],
           [4, 5, 6]])
    >>> np.concatenate([A, A], axis=1)
    array([[1, 2, 3, 1, 2, 3],
           [4, 5, 6, 4, 5, 6]])
    
    不能合并两个维度不同的数组
    >>> np.concatenate([A, a])
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<__array_function__ internals>", line 5, in concatenate
    ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
    
    如何忽略维度问题
    >>> np.concatenate([A, a.reshape(1, -1)])
    array([[1, 2, 3],
           [4, 5, 6],
           [1, 2, 3]])
    >>> A,a
    (array([[1, 2, 3],
           [4, 5, 6]]), array([1, 2, 3]))
    >>> A.shape, a.shape
    ((2, 3), (3,))
    >>> np.vstack([A, a])
    array([[1, 2, 3],
           [4, 5, 6],
           [1, 2, 3]])
    >>> a = np.array([[6],[6]])
    >>> a
    array([[6],
           [6]])
    >>> np.hstack([A, a])
    array([[1, 2, 3, 6],
           [4, 5, 6, 6]])

    数组分割

    >>> x
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> x1,x2,x3 = np.split(x, [3,7])
    >>> x1,x2,x3
    (array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8, 9]))
    >>> A = np.arange(16).reshape(4,4)
    >>> A
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15]])
    >>> A1,A2 = np.split(A, [2])
    >>> A1,A2
    (array([[0, 1, 2, 3],
           [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
           [12, 13, 14, 15]]))
    >>> A1,A2 = np.split(A,[2],axis=1)
    >>> A1,A2
    (array([[ 0,  1],
           [ 4,  5],
           [ 8,  9],
           [12, 13]]), array([[ 2,  3],
           [ 6,  7],
           [10, 11],
           [14, 15]]))
    >>> A1, A2 = np.vsplit(A, [2])
    >>> A1,A2
    (array([[0, 1, 2, 3],
           [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
           [12, 13, 14, 15]]))
    >>> A1,A2 = np.hsplit(A,[2])
    >>> A1,A2
    (array([[ 0,  1],
           [ 4,  5],
           [ 8,  9],
           [12, 13]]), array([[ 2,  3],
           [ 6,  7],
           [10, 11],
           [14, 15]]))
  • 相关阅读:
    小型开发团队对编程语言和框架的选型原则
    javascript: 复制数组时的深拷贝及浅拷贝(chrome 105.0.5195.125)
    javascript:每次只加载3个页面的幻灯(chrome 105.0.5195.125)
    javascript:得到变量类型的方法(chrome 105.0.5195.125)
    javascript:页面中有多处window.onload时的处理(chrome 105.0.5195.125)
    javascript: 自定义鼠标拖动的滑块slider(chrome 105.0.5195.125)
    javascript: 复制对象时的深拷贝及浅拷贝(chrome 105.0.5195.125)
    vue.js3:axios图片上传(vue@3.2.37 / axios@1.1.0)
    vue.js3:用elloading显示加载动画(vue@3.2.37 / elementplus@2.2.2)
    vue.js3: js下载图片的两种方式:url和canvas(vue@3.2.37)
  • 原文地址:https://www.cnblogs.com/waterr/p/14031926.html
Copyright © 2020-2023  润新知