• Numpy:np.vstack()&np.hstack() flat/flatten


    一 .  np.vstack: 按垂直方向(行顺序)堆叠数组构成一个新的数组

    In[3]:
    import numpy as np
    
    In[4]:
    a = np.array([[1,2,3]])
    a.shape
    Out[4]:
    (1, 3)
    
    In [5]:
    b = np.array([[4,5,6]])
    b.shape
    Out[5]:
    (1, 3)
    
    In [6]:
    c = np.vstack((a,b)) # 将两个(1,3)形状的数组按垂直方向叠加
    print(c)
    c.shape # 输出形状为(2,3)
    [[1 2 3]
     [4 5 6]]
    Out[6]:
    (2, 3)
    
    In [7]:
    a = np.array([[1],[2],[3]])
    a.shape
    Out[7]:
    (3, 1)
    
    In [9]:
    b = np.array([[4],[5],[6]])
    b.shape
    Out[9]:
    (3, 1)
    
    In [10]:
    c = np.vstack((a,b))  # 将两个(3,1)形状的数组按垂直方向叠加
    print(c)
    c.shape # 输出形状为(6,1)
    [[1]
     [2]
     [3]
     [4]
     [5]
     [6]]
    Out[10]:
    (6, 1)

    二 . np.hstack:按水平方向(列顺序)堆叠数组构成一个新的数组

    In[11]:
    a = np.array([[1,2,3]])
    a.shape
    Out[11]:
    (1, 3)
    
    In [12]:
    b = np.array([[4,5,6]])
    b.shape
    Out[12]:
    (1, 3)
    
    In [16]:
    c = np.hstack((a,b)) # 将两个(1,3)形状的数组按水平方向叠加
    print(c)
    c.shape  # 输出形状为(1,6)
    [[1 2 3 4 5 6]]
    Out[16]:
    (1, 6)
    
    In [17]:
    a = np.array([[1],[2],[3]])
    a.shape
    Out[17]:
    (3, 1)
    In [18]:
    b = np.array([[4],[5],[6]])
    b.shape
    Out[18]:
    (3, 1)
    In [19]:
    c = np.hstack((a,b)) 将两个(3,1)形状的数组按水平方向叠加
    print(c)
    c.shape  # 输出形状为(3,2)
    [[1 4]
     [2 5]
     [3 6]]
    Out[19]:
    (3, 2)

    三 .  numpy.ndarray.flat/flatten

    1. flat返回的是一个迭代器,可以用for访问数组每一个元素

    import numpy as np
    a = np.arange(4).reshape(2,2)
    print(a)
    for i in a.flat:
        print(i)
    #迭代器可以用list进行输出
    print(list(a.flat))
    print(type(a.flat))#返回类型为 numpy.flatiter
    #可以用索引对迭代器进行引号
    a.flat[3]
    #输出:
    [[0 1] [2 3]] 0 1 2 3 [0, 1, 2, 3] <class 'numpy.flatiter'> 3

    2. ndarray.flatten(order=’C’)

    Return a copy of the array collapsed into one dimension.
    将数组的副本转换为一维,并返回

    可选参数,order:{‘C’,‘F’,‘A’,‘K’}

      • ‘C’:C-style,行序优先
      • ‘F’:Fortran-style,列序优先
      • ‘A’:if a is Fortran contiguous in memory ,flatten in column_major order
      • ‘K’:按照元素在内存出现的顺序进行排序
        默认为’C’
    a = np.array([[4,5],[4,9]])
    #默认按行转换
    b= a.flatten()
    print(b)
    #换成列来划分
    c = a.flatten('F')
    print(c)
    [4 5 4 9]
    [4 4 5 9]
  • 相关阅读:
    Java言语与C言语有哪些不同
    只会增删改查的Java程序员该如何发展
    java“单根继承结构”
    Java编程领域你需要懂得技术名词解释
    HTTP相关工具类/协助类分享
    说说Java到底是值传递仍是引用传递
    Java自定义ClassLoader实现
    深化详细分析java的发展前景!
    2020Java面试题及答案,命中率高达90%
    Python爬虫详解,每个步骤都给你细致的讲解(附源码)
  • 原文地址:https://www.cnblogs.com/Bella2017/p/10748654.html
Copyright © 2020-2023  润新知