zoukankan      html  css  js  c++  java
  • 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]]))
  • 相关阅读:
    IT名词备忘录——汇编
    逆转链表的实现
    编写安全的代码的一些技巧
    extern c 谈
    回调函数
    职场必备八个黄金句型
    CString类的用法介绍和自己动手写的CString类
    61条面向对象设计的经验原则(转贴)
    sprintf的用法
    VisualStudioVS2010统计代码行数
  • 原文地址:https://www.cnblogs.com/waterr/p/14031926.html
Copyright © 2011-2022 走看看