您的位置:首页技术文章
文章详情页

python - 在 Numpy 里如何高效地定制矩阵?

浏览:72日期:2022-08-27 15:04:26

问题描述

比如我想要这样的矩阵:

In [10]: np.array([[(123, 3, 21)] * 3] * 2)Out[10]: array([[[123, 3, 21],[123, 3, 21],[123, 3, 21]], [[123, 3, 21],[123, 3, 21],[123, 3, 21]]])

Numpy 里有什么办法能代替如此粗鲁的「列表乘法」?显然 numpy.full 不行,因为它只能用一个 scalar 填充矩阵,不能用 [123, 3, 21] 填充。

此外我还想给某矩阵「加若干维」:

In [11]: a = np.arange(10)In [13]: b = np.asarray([a])In [14]: bOut[14]: array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

比如我想给现成的 a 加一维,只能如此手动包装 np.asarray([a]), 不知 Numpy 有什么 numpy.squeeze 的「反函数」可以拿来用。

问题解答

回答1:

第一个问题,参考楼上的就好,第二个扩展纬度,numpy有专门的函数: expand_dims

In [1]  import numpy as np In [2]  a = np.arange(10) In [3]  b = np.expand_dims(a, axis=0) # axis表示在那一维(轴)插入新的维度 In [4]  b Out[4]  array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])回答2:

np.tile((123, 3, 21), (2, 3, 1))

 In [1]   import numpy as np In [2]   a = np.arange(10) In [3]   b = a.reshape((1, 10)) In [4]   b Out[4]   array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

标签: Python 编程
相关文章: