栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从给定的numpy数组创建块对角线numpy数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从给定的numpy数组创建块对角线numpy数组

方法1

经典案例

numpy.kron
-

np.kron(np.eye(r,dtype=int),a) # r is number of repeats

样品运行-

In [184]: aOut[184]: array([[1, 2, 3],       [3, 4, 5]])In [185]: r = 3 # number of repeatsIn [186]: np.kron(np.eye(r,dtype=int),a)Out[186]: array([[1, 2, 3, 0, 0, 0, 0, 0, 0],       [3, 4, 5, 0, 0, 0, 0, 0, 0],       [0, 0, 0, 1, 2, 3, 0, 0, 0],       [0, 0, 0, 3, 4, 5, 0, 0, 0],       [0, 0, 0, 0, 0, 0, 1, 2, 3],       [0, 0, 0, 0, 0, 0, 3, 4, 5]])

方法#2

另一个高效的

diagonal-viewed-array-assignment
-

def repeat_along_diag(a, r):    m,n = a.shape    out = np.zeros((r,m,r,n), dtype=a.dtype)    diag = np.einsum('ijik->ijk',out)    diag[:] = a    return out.reshape(-1,n*r)

样品运行-

In [188]: repeat_along_diag(a,3)Out[188]: array([[1, 2, 3, 0, 0, 0, 0, 0, 0],       [3, 4, 5, 0, 0, 0, 0, 0, 0],       [0, 0, 0, 1, 2, 3, 0, 0, 0],       [0, 0, 0, 3, 4, 5, 0, 0, 0],       [0, 0, 0, 0, 0, 0, 1, 2, 3],       [0, 0, 0, 0, 0, 0, 3, 4, 5]])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号