import numpy as np
# np.stack的官方解释为 对指定axis增加维度,
# 我们发现y2.shape为(2,3,3),注意x1.shape为(3,3)也可以看做(1,3,3),
# 当给x1的axis = 0也就是第一维增加一维后就变成了(2,3,3),这刚好是y2.shape,
# 那x1增加的这个维度的内容用什么来填充呢?当然是x2了!(所以,也要明白的就是x1和x2的shape一定要相同)
# 当axis = 0时,
x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))
y2 = np.stack((x1,x2),axis=0)
print(x1)
print(x2)
# print(np.stack(x1,axis=0))
print(y2)
# 当axis = 1时,
# 当axis = 1时,对二维平面的行进行增加,所以本来应该是1行的,经过x2填充变成了2行。
x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))
y2 = np.stack((x1,x2),axis=1)
# 当axis = 2
x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))
y2 = np.stack((x1,x2),axis=1)
a=[[1,2,3],
[4,5,6]]
print("列表a如下:")
print(a)
print("增加一维,新维度的下标为0")
c=np.stack(a, axis=0)
print(c)
print(c.shape)
print("增加一维,新维度的下标为1")
c=np.stack(a,axis=1)
print(c)
# a=np.array([[1,2],
# [3,4]])
# print(np.max(a))
Numpy中stack(),hstack(),vstack()函数详解 - 张康的博客 - CSDN博客
https://blog.csdn.net/csdn15698845876/article/details/73380803
他是那个盒子理论;
np.stack函数 - 简书
https://www.jianshu.com/p/39112a4c0616
上面的代码出自这里。
下面是我自己,纸面写的,自己的理解:
下面是实例
import numpy as np
In [2]:
p.arange(12).reshape((2,2,3))
a
a = np.arange(12).reshape((2,2,3))
a
Out[2]:
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
In [3]:
b
b = np.arange(12,24,1).reshape((2,2,3))
b
Out[3]:
array([[[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23]]])
In [5]:
0
d0 = np.stack([a, b], axis=0)
d0
Out[5]:
array([[[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]],
[[[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23]]]])
In [6]:
d1
d1 = np.stack([a, b], axis=1)
d1
Out[6]:
array([[[[ 0, 1, 2],
[ 3, 4, 5]],
[[12, 13, 14],
[15, 16, 17]]],
[[[ 6, 7, 8],
[ 9, 10, 11]],
[[18, 19, 20],
[21, 22, 23]]]])
In [7]:
d2
d2 = np.stack([a, b], axis=2)
d2
Out[7]:
array([[[[ 0, 1, 2],
[12, 13, 14]],
[[ 3, 4, 5],
[15, 16, 17]]],
[[[ 6, 7, 8],
[18, 19, 20]],
[[ 9, 10, 11],
[21, 22, 23]]]])
****************************************************************
2019-0728 又遇到这个问题了,加一条:
表明
np.concatenate(a,axis=0) 与 np.vstack(a) 一致
np.concatenate(a,axis=1) 与 np.hstack(a) 一致
import numpy as np
a = np.random.randint(1, 9,size=(2,3,4))
print(a)
print('*'*50)
print(np.concatenate(a,axis=0))
print('*'*50)
print(np.concatenate(a,axis=1))
print('*'*50)
print(np.vstack(a))
print('*'*50)
print(np.hstack(a))
下图是结果
[[[5 8 2 8]
[1 1 3 3]
[8 2 6 3]]
[[6 8 3 8]
[4 1 7 8]
[8 1 7 2]]]
**************************************************
[[5 8 2 8]
[1 1 3 3]
[8 2 6 3]
[6 8 3 8]
[4 1 7 8]
[8 1 7 2]]
**************************************************
[[5 8 2 8 6 8 3 8]
[1 1 3 3 4 1 7 8]
[8 2 6 3 8 1 7 2]]
**************************************************
[[5 8 2 8]
[1 1 3 3]
[8 2 6 3]
[6 8 3 8]
[4 1 7 8]
[8 1 7 2]]
**************************************************
[[5 8 2 8 6 8 3 8]
[1 1 3 3 4 1 7 8]
[8 2 6 3 8 1 7 2]]