python - 在 Numpy 里如何高效地定制矩阵?
问题描述
比如我想要这样的矩阵:
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]])
相关文章:
1. javascript - fis3使用MD5但是如何引用?2. css - 怎么实现一个圆点在一个范围内乱飞3. javascript - JAVA写的H5页面能否解释一下流程4. 网页爬虫 - python爬虫翻页问题,请问各位大神我这段代码怎样翻页,还有价格要登陆后才能看到,应该怎么解决5. javascript - 使用form进行页面跳转,但是很慢,如何加一个Loading?6. docker-compose中volumes的问题7. docker-machine添加一个已有的docker主机问题8. javascript - 后台管理系统左侧折叠导航栏数据较多,怎么样直接通过搜索去定位到具体某一个菜单项位置,并展开当前菜单9. python 计算两个时间相差的分钟数,超过一天时计算不对10. javascript - html5的data属性怎么指定一个function函数呢?
