0
我想在Python中将2个三角形NumPy数组组合成一个新数组。每个三角形阵列都是半值填充的,在对角线上为零。我需要将这两个数组合并成一个新的组合数组,其对角线上的零点。Python NumPy在对角线上方/下方连接2个三角形阵列
这里是阵列X
import numpy as np
X = np.random.rand(4,4)
[[ 0.06681579 0.25793063 0.86489791 0.78399056]
[ 0.7335036 0.99703778 0.40017913 0.07912444]
[ 0.43533884 0.51517525 0.28110527 0.10793738]
[ 0.19212844 0.704657 0.94657795 0.89042305]]
我然后提取lower 和从阵列的upper对角线值的修改版本:
u = np.triu(X+1,k=1)
l = np.tril(X,k=-1)
print u
[[ 0. 1.25793063 1.86489791 1.78399056]
[ 0. 0. 1.40017913 1.07912444]
[ 0. 0. 0. 1.10793738]
[ 0. 0. 0. 0. ]]
print l
[[ 0. 0. 0. 0. ]
[ 0.7335036 0. 0. 0. ]
[ 0.43533884 0.51517525 0. 0. ]
[ 0.19212844 0.704657 0.94657795 0. ]]
现在,我需要将这些2结合阵列u
和l
一起使得:
- 上的三角形(不包括对角)充满
u
- 下三角(不包括对角)充满
l
- 对角线还是有一些零
这里是我的我正在寻找:
[[ 0. 1.25793063 1.86489791 1.78399056]
[ 0.7335036 0. 1.40017913 1.07912444]
[ 0.43533884 0.51517525 0. 1.10793738]
[ 0.19212844 0.704657 0.94657795 0. ]]
有没有办法连接这2个NumPy数组来获得这个输出?
UL = np.where(U == 0,L,U)也许 – NaN
好吧,我在下面标记为接受的答案。但是,这种方法非常简洁,也适用。我试过'u [u == 0] = l',但那不起作用。很好的答案。谢谢@NaN。 –
它是有用的... a = np.zeros((4,4),dtype = int)... b = np.arange(16).reshape(4,4)... u = np.triu (u == 0,a + 5,b)a, ...启用几个阵列构建方法的捷径。另外,您可以使用... ur = np.rot90(u)...如果triu或trial的方向不适合 – NaN