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

 zj5415 发布于 2022-10-25 18:09

比如我想要这样的矩阵:

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]: b
Out[14]: array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

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

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]])
    2022-10-26 23:42 回答
  • 第一个问题,参考楼上的就好,第二个扩展纬度,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]])
    2022-10-26 23:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有