从(n,n,n)NumPy数组到具体的一维提取。

我有一个形状为(n, n, n)的NumPy数组sc。

我想存储sc[i][j][l]for 0 <= i <j <n(这意味着我忘记了i >=j的数组的值),而每一个0 <= l <n在一个大小为m * n的一维np.数组中,其中m = n(n-1)2。

这里我的函数。

def fromScToMt(sc):
    n = sc.shape[0]
    mt = []  # start with an empty python list
    for i in range(0, n - 1):
        for j in range(i + 1, n):
            for l in range(0, n):
                mt.append(sc[i][j][l])  # populate the list with the desired values
    return np.array(mt)  # turn the list into a 1-dimensional numpy array

做这件事最有效的方法是什么?

谢谢!Julien

解决方案:

您可以使用 np.triu_indices() 以有效地获得上三角形的指数。

fromScToMt(sc)
# array([ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28, 29, 30, 31, 44, 45, 46, 47])

sc[np.triu_indices(n, k=1)].ravel()
# array([ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28, 29, 30, 31, 44, 45, 46, 47])

给TA打赏
共{{data.count}}人
人已打赏
未分类

在Wordpress中使用PHP在一个页面上更改永久地址。

2022-9-8 2:45:39

未分类

谷歌云平台试用

2022-9-8 2:56:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索