数组变形最灵活的实现方式是通 过 reshape() 函数来实现。例如,如果你希望将数字 1~9 放入一个 3×3 的矩阵中,可以采用如下方法:
In[1]: grid = np.arange(1, 10).reshape((3, 3))
print(grid)
[[1 2 3]
[4 5 6]
[7 8 9]]
请注意,如果希望该方法可行,那么原始数组的大小必须和变形后数组 的大小一致。如果满足这个条件,reshape 方法将会用到原始数组的一 个非副本视图。但实际情况是,在非连续的数据缓存的情况下,返回非 副本视图往往不可能实现。
另外一个常见的变形模式是将一个一维数组转变为二维的行或列的矩 阵。你也可以通过 reshape 方法来实现,或者更简单地在一个切片操 作中利用 newaxis 关键字:In[2]: x = np.array([1, 2, 3])
# 通过变形获得的行向量
x.reshape((1, 3))
Out[2]: array([[1, 2, 3]])
In[3]: # 通过newaxis获得的行向量
x[np.newaxis, :]
Out[3]: array([[1, 2, 3]])
In[4]: # 通过变形获得的列向量
x.reshape((3, 1))
Out[4]: array([[1],
[2],
[3]])
In[5]: # 通过newaxis获得的列向量
x[:, np.newaxis]
Out[5]: array([[1],
[2],
[3]])