Python 如何同时从张量中提取多行?

Python 如何同时从张量中提取多行?,python,arrays,numpy,tensorflow,Python,Arrays,Numpy,Tensorflow,TL;博士: TensorFlow张量的形状是(50,50,6),需要这些索引(:,:,(0,2,3))。如何提取它们 下面是我正在使用的一个示例阵列: import numpy as np a = np.random.randint(0,10, (50, 50, 6)) 我想提取第一行、第三行和第四行的数据;换句话说,我需要所有这些条目(:,:,(1,3)),它们适用于numpy数组: out = a[:,:, [0, 2, 3]] out.shape #(50, 50, 3) 使用张

TL;博士: TensorFlow张量的形状是
(50,50,6)
,需要这些索引(:,:,(0,2,3))。如何提取它们

下面是我正在使用的一个示例阵列:

import numpy as np

a = np.random.randint(0,10, (50, 50, 6))
我想提取第一行、第三行和第四行的数据;换句话说,我需要所有这些条目
(:,:,(1,3))
,它们适用于numpy数组:

out = a[:,:, [0, 2, 3]]
out.shape #(50, 50, 3)

使用张量
t=tf。将\u转换为\u张量(a)
,然后调用如下索引

t[:,:, [0, 2, 3]]
抛出一个错误:

TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf.int64 tensors are valid indices, got [0, 1, 3]
对于numpy,我发现了以下相关问题,但它们自然关注numpy阵列:

out = a[:,:, [0, 2, 3]]
out.shape #(50, 50, 3)

查看TF文档,我发现了
gather\u nd
boolean\u mask
,我觉得它们很有帮助,但我必须坦率地承认,我没有理解这部分的文档。因此,我发现了这个问题,它集中在单个元素上;我正在寻找完整的尺寸(如果这是正确的措辞在这里)


如何在TensorFlow中实现numpy功能?

如果您需要张量中最后一个轴的0,2和第三个元素,可以按如下方式使用tf.gather:tf.gather(t,index=[0,2,3],axis=-1])

您能自己提取每个通道并在战后将它们合并吗?或者将其转换为一个numpy数组,然后像以前一样使用
out=a[:,:,[0,2,3]]
?如果你想要张量中最后一个轴的0,2和第三个元素,你可以使用tf.gather如下所示:tf.gather(t,index=[0,2,3],axis=-1))@AbhilashRajan你的解决方案就是我一直在寻找的!如果你不介意的话,你可以写下你的评论作为一个完整的答案,我很乐意接受。