【发布时间】:2019-10-25 05:15:51
【问题描述】:
我有一个 tensorflow 数组名称 tf-array 和一个 numpy 数组名称 np_array。我想在tf_array 中找到与np-array 相关的特定行。
tf-array = tf.constant(
[[9.968594, 8.655439, 0., 0. ],
[0., 8.3356, 0., 8.8974 ],
[0., 0., 6.103182, 7.330564 ],
[6.609862, 0., 3.0614321, 0. ],
[9.497023, 0., 3.8914037, 0. ],
[0., 8.457685, 8.602337, 0. ],
[0., 0., 5.826657, 8.283971 ]])
我还有一个 np 数组:
np_array = np.matrix(
[[2, 5, 1],
[1, 6, 4],
[0, 0, 0],
[2, 3, 6],
[4, 2, 4]]
现在我想保留tf-array 中的元素,其中n (here n is 2) 的组合(它们的索引)在np-array 的值中。什么意思?
例如,tf-array 中,第一列中具有值的索引为:(0,3,4)。 np-array 中是否有任何行包含这两个索引的任意组合:(0,3), (0,4) or (3,4)。实际上,没有这样的行。所以该列中的所有元素都变成了zero。
tf-array 中第二列的索引是 (0,1) (0,5) (1,5)。如您所见,记录 (1,5) 在第一行的np-array 中可用。这就是我们将这些保留在tf-array 中的原因。
所以最终的结果应该是这样的:
[[0. 0. 0. 0. ]
[0. 8.3356 0. 8.8974 ]
[0. 0. 6.103182 7.330564 ]
[0. 0. 3.0614321 0. ]
[0. 0. 3.8914037 0. ]
[0. 8.457685 8.602337 0. ]
[0. 0. 5.826657 8.283971 ]]
我正在寻找一种非常有效的方法,因为我有大量数据。
更新1
我可以用下面的代码得到这个,它给出了True,其中有值和零掩码给false:
[[ True True False False]
[False True False True]
[False False True True]
[ True False True False]
[ True False True False]
[False True True False]
[False False True True]]
with tf.Session() as sess:
where = tf.not_equal(tf-array, 0.0)
print(sess.run(where))
但是如何将这些矩阵与np_array 进行比较?
提前谢谢你!
【问题讨论】:
标签: python arrays numpy tensorflow slice