什么是 numpy.newaxis
什么时候应该使用它?
在一维数组上使用它 x
产生:
>>> x
array([0, 1, 2, 3])
>>> x[np.newaxis, :]
array([[0, 1, 2, 3]])
>>> x[:, np.newaxis]
array([[0],
[1],
[2],
[3]])
原文由 Yue Harriet Huang 发布,翻译遵循 CC BY-SA 4.0 许可协议
什么是 numpy.newaxis
什么时候应该使用它?
在一维数组上使用它 x
产生:
>>> x
array([0, 1, 2, 3])
>>> x[np.newaxis, :]
array([[0, 1, 2, 3]])
>>> x[:, np.newaxis]
array([[0],
[1],
[2],
[3]])
原文由 Yue Harriet Huang 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
简单的说
numpy.newaxis
是用来将已有数组 的维度增加 一维,使用 一次。因此,等等..
这是一个视觉插图,描述了从 1D 数组到 2D 数组的 提升。
场景 1 :
np.newaxis
当您想要将一维数组 显式 转换为 行向量 或 列向量 时,可能会派上用场,如上图所示。例子:
场景 2 :当我们想使用 numpy 广播 作为某些操作的一部分时,例如在 添加 一些数组时。
例子:
假设您要添加以下两个数组:
如果您尝试像那样添加这些,NumPy 将引发以下
ValueError
:在这种情况下,您可以使用
np.newaxis
增加其中一个数组的维度,以便 NumPy 可以 广播。现在,添加:
或者,您也可以向数组添加新轴
x2
:现在,添加:
注意:观察我们在两种情况下得到相同的结果(但一种是另一种的转置)。
场景 3 :这与场景 1 类似。但是,您可以多次使用
np.newaxis
将数组 提升 到更高的维度。高阶数组( _即张量_)有时需要这样的操作。例子:
作为替代方案,您可以使用
numpy.expand_dims
具有直观的axis
kwarg。更多关于 np.newaxis 与 np.reshape 的背景
newaxis
也称为伪索引,允许将轴临时添加到多数组中。np.newaxis
使用切片运算符重新创建数组,而numpy.reshape
将数组重塑为所需的布局(假设尺寸匹配;这是 必须 的reshape
即将发生)。例子
在上面的示例中,我们在
B
的第一轴和第二轴之间插入了一个临时轴(以使用广播)。此处使用np.newaxis
填充缺失的轴,以使 广播 操作正常进行。_一般提示_:您也可以使用
None
代替np.newaxis
;这些实际上是 相同的对象。PS 另请参阅这个很好的答案: newaxis vs reshape to add dimensions