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:按水平方向(列顺序)堆叠数组构成一个新的数组spa

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/flattencode

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

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]
本站公众号
   欢迎关注本站公众号,获取更多信息