欢迎访问宙启技术站
智能推送

Numpy:使用newaxis()扩展维度的技巧

发布时间:2023-12-24 10:43:01

在使用Numpy进行数组操作时,有时候我们需要将数组的维度进行扩展或者重新构造。在Numpy中,我们可以使用newaxis方法来实现这个目的。

newaxis是一个常用的技巧,它能够为数组增加一个新的维度。通过将newaxis插入到数组中,可以改变数组的形状,使其具有更高维度的特性。这在许多场景中都非常有用,比如在进行矩阵运算、数据转置或者合并操作时。

下面我们通过一些具体的例子来展示如何使用newaxis来扩展数组维度。

**例子1:将一维数组转换为二维数组**

假设我们有一个一维数组a,它包含了10个元素。我们想要将它转换为一个形状为(10, 1)的二维数组。这可以通过在a数组中使用newaxis来实现。

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(a.shape)  # (10,)

b = a[:, np.newaxis]
print(b.shape)  # (10, 1)

在上面的例子中,我们通过np.newaxisa数组的维度进行了扩展,从而得到了一个形状为(10, 1)的二维数组b。这对于矩阵运算中的一些操作非常有用,比如在计算内积时。

**例子2:将二维数组进行转置**

newaxis也可以用于二维数组的转置操作。假设我们有一个二维数组c,形状为(3, 4),我们可以使用newaxis将其转置为一个形状为(4, 3)的数组。

c = np.arange(12).reshape(3, 4)
print(c.shape)  # (3, 4)

d = c.T
print(d.shape)  # (4, 3)

# 使用newaxis进行转置
e = c[:, :, np.newaxis]
print(e.shape)  # (3, 4, 1)

上面的例子中,我们首先使用T方法对数组c进行转置操作得到了数组d,其形状为(4, 3)。然后,我们使用newaxis在原始数组c的维度中插入了一个新的维度,从而得到了形状为(3, 4, 1)的数组e

**例子3:两个数组的拼接**

newaxis也可以用于将两个数组进行拼接。假设我们有两个形状相同的一维数组fg,我们可以使用newaxis将它们合并为一个形状为(2, 10)的二维数组。

f = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
g = np.array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20])

h = np.concatenate((f[:, np.newaxis], g[:, np.newaxis]), axis=0)
print(h.shape)  # (2, 10)

在上述例子中,我们首先使用np.newaxis将数组fg的维度进行了扩展,然后使用np.concatenate方法将这两个数组沿着轴0进行了拼接,得到了一个形状为(2, 10)的二维数组h

通过上述例子,我们可以看到,newaxis能够非常方便地改变数组的维度,使得我们可以更加灵活地进行数组操作。这个技巧在很多场景中都非常有用,特别是在进行矩阵运算、数据转置、合并等操作时。