numpy之列组合

列组合函数:column_stack

在学习列组合的时候有不理解的地方,然后发现一种比较好的理解形式,记录一下,便于回顾

import numpy as np
# 对于一维数组将按照列的方向进行组合
a1 = np.arange(2)     #此时 a1 = [0,1]
b1 = 2 * a1        #此时 b1 = [0,2]
c1 = np.column_stack((a1,b1)) #然后调用列组合函数

#列组合函数执行步骤

#step1 第一列组合 得到[0,0]

#step2 第二列组合 得到[1,2]
print(c1) #得到的结果为:[[0,0][1,2]]

 

#对于二维数组column_stack和hstack效果是一样的
a2 = np.arange(9).reshape(3,3)
b2 = 2 * a2
col = np.column_stack((a2,b2))
print(col) #[[ 0 1 2 0 2 4][ 3 4 5 6 8 10][ 6 7 8 12 14 16]]

#二维数组列合并这个地方不太好理解,可以按照如下思路进行理解
#a数组写成如下方式
#[[0,1,2][3,4,5][6,7,8]]
#b数组写成如下方式
#[[0,2,4][6,8,10][12,14,16]]
#按照列合并的方式
#step1 合并第一列 得到[0,1,2,0,2,4]
#step2 合并第二列 得到[3,4,5,6,8,10]
#step3 合并第三列 得到[6,7,8,12,14,16]
#所以最后得到结果
#[[0,1,2,0,2,4][3,4,5,6,8,10][6,7,8,12,14,16]]
#
#三维数组更复杂

a3 = np.arange(24).reshape(2,3,4)
b3 = 2 * a3
c3 = np.column_stack((a3,b3))
print("a3 = ",a3)
#[
# [ [ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] ]
# [ [12 13 14 15] [16 17 18 19] [20 21 22 23] ]
#]
print("b3 = ",b3)
#[
# [ [ 0 2 4 6] [ 8 10 12 14] [16 18 20 22] ]
# [ [24 26 28 30] [32 34 36 38] [40 42 44 46] ]
#]
print("c3 = ",c3)
#[
# [ [ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [ 0 2 4 6] [ 8 10 12 14] [16 18 20 22] ]
# [ [12 13 14 15] [16 17 18 19] [20 21 22 23] [24 26 28 30] [32 34 36 38] [40 42 44 46] ]
#]
#三维列组合可以按照如下理解
#按照上面的例子,把a3和b3均看做2行3列的数组
#step1 合并第一列,和二维数组类似,不同的是二维数组中每一列是数字(得到一维数组),三维每一列都是另外的数组,
# 所以得到的结果是一个二维数组(1X6 实际上是1X3X4)[[0 1 2 3][4 5 6 7][8 9 10 11][0 2 4 6][8 10 12 14][16 18 20 22]]
#step2 和第一步一样 合并第二列
# 得到如下的二维数组(1X6 实际上是1X3X4)[[12 13 14 15][16 17 18 19][20 21 22 23][24 26 28 30][32 34 36 38][40 42 44 46]]
#step3 合并前两步的结果得到三维数组(2X6 实际上是2X3X4)
#[
# [ [0 1 2 3] [4 5 6 7] [8 9 10 11] [0 2 4 6] [8 10 12 14] [16 18 20 22] ]
# [ [12 13 14 15] [16 17 18 19] [20 21 22 23] [24 26 28 30] [32 34 36 38] [40 42 44 46] ]
#]

#总体可以看做是一个二维数组维度为2X6,简化如下
#a00 = [0 1 2 3]
#a01 = [4 5 6 7]
#a02 = [8 9 10 11]
#a03 = [0 2 4 6]
#a04 = [8 10 12 14]
#a05 = [16 18 20 22]
#
#b00 = [12 13 14 15]
#b01 = [16 17 18 19]
#b02 = [20 21 22 23]
#b03 = [24 26 28 30]
#b04 = [32 34 36 38]
#b05 = [40 42 44 46]
#
#c3 = [[a00 a01 a02 a03 a04 a05][b00 b01 b02 b03 b04 b05]]

posted on 2018-02-22 10:29  duanzw_一介布衣  阅读(256)  评论(0)    收藏  举报

导航