numpy中np.newaxis()用法详解

737 阅读2分钟

引言

  • 本文为个人记录学习使用pytorch来构建RNN代码过程中遇到的一些函数用法总结
  • 本文主要包含numpy中np.newaxis()函数的介绍,有些注释内容可能存在错误,仅供参考。

np.newaxis()

  • np.newaxis的功能:增加新的维度。
    • np.newaxis会根据使用位置的不同,产生的矩阵形状也不同。
    • x[:, np.newaxis] :比如放在序列x的列位置上,会给列上增加维度;
    • x[np.newaxis, :] :放在序列x的行位置上,会给行上增加维度;
    • x[np.newaxis, : , np.newaxis]:行和列都使用就会行列都增加维度;
    • 一般来说变换维度都是为了能够使得矩阵能够进行运算,但是具体变成什么样子,增加维度后如何运算个人还是比较困惑。

np.newaxis()实例介绍

  • 测试代码如下(分别测试了一维数据和二维数据来展示函数功能):
# x本身是一维数据
x = np.array([5, 6, 7, 8])
print(x, x.shape)
# 在列上增加新维度
x_add = x[:, np.newaxis]
print(x_add, x_add.shape)

x = np.array([5, 6, 7, 8])
print(x, x.shape)
# 在列上增加新维度
x_add = x[np.newaxis, :]
print(x_add, x_add.shape)

x = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(x, x.shape)
x_add = x[:, np.newaxis]
# 给二维数组的列上增加维度
print(x_add, x_add.shape)

x = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(x, x.shape)
x_add = x[np.newaxis, :, np.newaxis]
# 分别给数组行列都增加维度
print(x_add, x_add.shape)
  • 其运行结果如下图所示
    • 一维数据
    • 二维数组

数组维度的一些理解

  • 以下为个人对不同维度数组形状的一个理解,相对来说多维数组想象起来感觉比较抽象,不太容易理解具体结构。
  • 首先是关于不同形状数组:1维 (1 行 n 列 一层中括号)、2维(n 行 n 列 两层中括号)、3维(n 块 n 行 n 列 三层中括号变成了一个立方体,每一层都是一个2维数组)
    • 至于4维以及后面的5,6维个人从下图可以想象但是无法理解这样还如何计算以及什么场景下会用到这么高纬的数组....
  • 关于三维及以上维度的数组使用待后续理解加深后再补上