基于python,利用np.newaxis扩展维度信息,等效的三种写法
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
说了ndarray
的降维方法,本文反其道而行,说说ndarray
的增加维度的方法。在以前的文章中,是使用np.expand_dims()
来增加维度的。本文使用另外一个方法,叫做np.newaxis
。它不是一个函数,只是一个特殊的常量。
苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的代码经验总结。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
。
np.newaxis 代表 None
既然是个常量,那么必然代表着某个数值。打印一下看看效果。
import numpy as np
print(np.newaxis) # None
居然输出None
!
np.newaxis 同效不同写法
新的测试代码对比:
import numpy as np
x = np.array([1, 2, 3])
print(x.shape) # (3,)
x0 = x[:, np.newaxis]
print(x0,x0.shape) # [[1] [2] [3]] (3, 1)
x1 = x[:, None]
print(x1,x1.shape) # [[1] [2] [3]] (3, 1)
print(np.array_equal(x0, x1)) # True
x2 = np.expand_dims(x, axis=1)
print(x2,x2.shape) # [[1] [2] [3]] (3, 1)
print(np.array_equal(x0, x2)) # True
结论是:
- 使用
np.newaxis
和None
效果一样。 - 使用
np.newaxis
和np.expand_dims()
的效果也是一样的。
轴向 axis 设置
import numpy as np
x = np.array([1, 2, 3])
print(x.shape) # (3,)
x3 = x[np.newaxis, :]
print(x3.shape) # (1, 3)
print(x3) # [[1 2 3]]
x4 = np.expand_dims(x, axis=0)
print(x4.shape) # (1, 3)
print(x4) # [[1 2 3]]
可见:np.newaxis
的代码位置,代表了axis
轴向。
维度要一层一层扩展
理论上可以拓展无线多层,只要按顺序不断执行即可。
# 基于上面的x3,x4
x5 = x3[np.newaxis, :]
print(x5.shape) # (1, 1, 3)
print(x5) # [[[1 2 3]]]
x6 = np.expand_dims(x4, axis=0)
print(x6.shape) # (1, 1, 3)
print(x6) # [[[1 2 3]]]
一键降维
本文的这些变量,都是np.squeeze()
函数的好的实验对象。
import numpy as np
x = np.array([1, 2, 3]) # (3,)
x0 = x[:, np.newaxis] # [[1] [2] [3]] (3, 1)
x1 = x[:, None] # [[1] [2] [3]] (3, 1)
x2 = np.expand_dims(x, axis=1) # [[1] [2] [3]] (3, 1)
x3 = x[np.newaxis, :] # [[1 2 3]] (1, 3)
x4 = np.expand_dims(x, axis=0) # [[1 2 3]] (1, 3)
x5 = x3[np.newaxis, :] # [[[1 2 3]]] (1, 1, 3)
x6 = np.expand_dims(x4, axis=0) # [[[1 2 3]]] (1, 1, 3)
print(np.squeeze(x)) # [1 2 3]
print(np.squeeze(x0)) # [1 2 3]
print(np.squeeze(x1)) # [1 2 3]
print(np.squeeze(x2)) # [1 2 3]
print(np.squeeze(x3)) # [1 2 3]
print(np.squeeze(x4)) # [1 2 3]
print(np.squeeze(x5)) # [1 2 3]
print(np.squeeze(x6)) # [1 2 3]
结语
这些就是维度的游戏... 更多python
的经验技巧文章,请参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。