这是我正在努力解决的一些代码。
我的目标是从现有的一个(t)创建一个数组(db),在db中,每一行代表一个值t。 db将有3列,1表示t中的行索引,1表示t中的列索引,1表示t中的值。
在我的情况下,t是距离矩阵,因此对角线是0并且它是对称的,我用0替换了下三角值。我在新数组中不需要0值但是我可以在另一步中删除它们
import numpy as np
t = np.array([[0, 2.5],
[0, 0]])
我的目标是获得一个新阵列,例如:
db = np.array([[0, 0, 0],
[0, 1, 2.5],
[1, 0, 0],
[1, 1, 0]])
感谢您的时间。
答案 0 :(得分:0)
您可以为行和列创建meshgrid
个2D坐标,然后将这些坐标展开为1D数组。然后,您可以将这两个数组以及展开的t
版本连接成一个最终矩阵:
import numpy as np
(Y, X) = np.meshgrid(np.arange(t.shape[1]), np.arange(t.shape[0]))
db = np.column_stack((X.ravel(), Y.ravel(), t.ravel()))
In [9]: import numpy as np
In [10]: t = np.array([[0, 2.5],
...: [0, 0]])
In [11]: (Y, X) = np.meshgrid(np.arange(t.shape[1]), np.arange(t.shape[0]))
In [12]: db = np.column_stack((X.ravel(), Y.ravel(), t.ravel()))
In [13]: db
Out[13]:
array([[ 0. , 0. , 0. ],
[ 0. , 1. , 2.5],
[ 1. , 0. , 0. ],
[ 1. , 1. , 0. ]])