根据来自另一个张量的索引创建新的张量,并使用它的值进行分配

时间:2018-06-06 20:40:09

标签: python numpy tensorflow numpy-ndarray

我的张量t看起来像[[0, 1, 1.5], [1, 1, 7.3], [2, 0, 2.3]],我需要创建一个新的张量t1,形状(3,3,1)t1[t[:, :1], t[:, 1:2]](元素来自第一列用作第一个坐标,第二列用作第二个坐标的元素用第t个第三列中的元素分配。像这样t1 = [[[0.0], [1.5], [0.0]], [[0.0], [7.3], [0.0]], [[2.3], [0.0], [0.0]]]。如何在没有循环的情况下使用TensorFlow(或Numpy)中的矩阵运算来实现?

2 个答案:

答案 0 :(得分:0)

您可以使用tf.sparse_to_dense

tf.sparse_to_dense(tf.to_int32(t[:, :2]), [3, 3], t[:, 2])[..., None]

答案 1 :(得分:0)

怎么样:

import numpy as np

t = np.asarray([[0,1,1.5],[1,1,7.3],[2,0,2.3]])

t1 = np.zeros([3,3,1])
t1[t[:,0].astype(int), t[:,1].astype(int),0] = t[:,2]