Numpy:使用newaxis()扩展维度的技巧
在使用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.newaxis将a数组的维度进行了扩展,从而得到了一个形状为(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也可以用于将两个数组进行拼接。假设我们有两个形状相同的一维数组f和g,我们可以使用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将数组f和g的维度进行了扩展,然后使用np.concatenate方法将这两个数组沿着轴0进行了拼接,得到了一个形状为(2, 10)的二维数组h。
通过上述例子,我们可以看到,newaxis能够非常方便地改变数组的维度,使得我们可以更加灵活地进行数组操作。这个技巧在很多场景中都非常有用,特别是在进行矩阵运算、数据转置、合并等操作时。
