【问题标题】:How to copy lower triangle to upper triangle for a 4 dimension array in Numpy Python?如何在 Numpy Python 中将 4 维数组的下三角形复制到上三角形?
【发布时间】:2020-11-28 16:08:47
【问题描述】:

目标是将下三角形复制到上三角形。 根据OP 中的建议,起草了以下代码。

import numpy as np

lw_up_pair = np.tril_indices(4, -1)
arr=np.zeros((4,4,1,1))

arr[1,:1,:,0]=1
arr[2,:2,0,0]=2
arr[3,:3,0,0]=3
arr = arr + arr.T - np.diag(np.diag(arr))

但是,它给出了一个错误

ValueError:输入必须是 1 维或 2 维。

我可以知道如何处理这个问题吗?

预期输出如下

[[[0.]],, [[1.]],, [[2.]],, [[3.]]]
[[[1.]],, [[0.]],, [[2.]],, [[3.]]]
[[[2.]],, [[2.]],, [[0.]],, [[3.]]]
[[[3.]],, [[3.]],, [[3.]],, [[0.]]]

【问题讨论】:

  • 连续的逗号是什么意思?

标签: python numpy triangular


【解决方案1】:

在执行三角形复制之前,应用“挤压”来挤压最后两个轴(每个轴的长度为 1)。

这会给你留下一个二维数组。

然后,在执行完三角形复制后,重新引入您挤出的轴:

arr = np.squeeze(arr)
arr = arr + arr.T - np.diag(np.diag(arr))
arr = arr[...,None, None]

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多