Wetts's blog

Stay Hungry, Stay Foolish.

0%

Python-numpy-newaxis

转自:https://blog.csdn.net/xtingjie/article/details/72510834

numpy中包含的newaxis可以给原数组增加一个维度

np.newaxis放的位置不同,产生的新数组也不同

一维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

x
Out[48]: array([4, 6, 6, 6, 5])

x1 = x[np.newaxis, :]

x1
Out[50]: array([[4, 6, 6, 6, 5]])

x2 = x[:, np.newaxis]

x2
Out[52]:
array([[4],
[6],
[6],
[6],
[5]])

由以上代码可以看出,当把newaxis放在前面的时候

以前的shape是5,现在变成了1×5,也就是前面的维数发生了变化,后面的维数发生了变化

而把newaxis放后面的时候,输出的新数组的shape就是5×1,也就是后面增加了一个维数

所以,newaxis放在第几个位置,就会在shape里面看到相应的位置增加了一个维数

如下:

1
2
3
4
5
6
7
8
9
10
11
12
x = np.random.randint(1, 8, size=(2, 3, 4))
y = x[:, np.newaxis, :, :]
z = x[:, :, np.newaxis, :]

x.shape
Out: (2, 3, 4)

y.shape
Out: (2, 1, 3, 4)

z.shape
Out: (2, 3, 1, 4)

一般问题

经常会遇到这样的问题,需要从数组中取出一部分的数据,也就是取出“一片”或者“一条”

比如需要从二维数组里面抽取一列

取出来之后维度却变成了一维

假如我们需要将其还原为二维,就需要上面的方法了