一、起始

np.newaxis的作用就是在这一位置增加一个一维,这一位置指的是np.newaxis所在的位置,举个例子如下。

x1 = np.array([1, 2, 3, 4, 5])
# the shape of x1 is (5,)
x1_new = x1[:, np.newaxis]
# now, the shape of x1_new is (5, 1)
# array([[1],
#        [2],
#        [3],
#        [4],
#        [5]])
x1_new = x1[np.newaxis,:]
# now, the shape of x1_new is (1, 5)
# array([[1, 2, 3, 4, 5]])

二、newaxis本质

是不是还是不理解?没关系,上面例子先放一放,继续往下看:

>> type(np.newaxis)
NoneType
>> np.newaxis == None
True

从这里可知,其实np.newaxis就是None,

>> x = np.arange(3)
>> x
array([0, 1, 2])
>> x.shape
(3,)

>> x[:, np.newaxis]
array([[0],
       [1],
       [2]])

>> x[:, None]
array([[0],
       [1],
       [2]])

>> x[:, np.newaxis].shape
 (3, 1)

三、综合理解

大家观察下上面使用newaxis的时机,都是配合切片[]使用的
不难观察到,对于x[:,np.newaxis]来说,若没有np.newaxis,则原式=x[:],就是把x中的元素全部取出返回一个视图而已,在一维数组中,x没有第二个轴,而加上np.newaxis后的x[:,np.newaxis]就是加了一个None,就是在x中的一维轴中的元素上加了一个轴,因此
x=[1,2,3]时,对1加轴得[1],对2得[2],对3得[3]
x=[[1],[2],[3]], 对[1]加轴得[[1]]。。。。。。x[:np.newaxis]=[[[1],[[2]],[[3]]]

参考:
https://www.jianshu.com/p/78e1e281f698
https://www.cnblogs.com/onemorepoint/p/8110523.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐