python – 除了每个n之外切片每个项目
发布时间:2020-12-20 11:09:43 所属栏目:Python 来源:网络整理
导读:在张量流中,可以使用切片符号[:: n]选择每个第n个项目. 但如何做相反的事情呢?我想选择除每个项目之外的所有项目. 例如: a = [1,2,3,4,5,6,7,8] a [2 :: 3]会导致[3,6] 现在我想反过来说:[1,8] 上面的数组只是一个例子.解决方案应该适用于张量流中维度[批
在张量流中,可以使用切片符号[:: n]选择每个第n个项目.
但如何做相反的事情呢?我想选择除每个项目之外的所有项目. 例如: a = [1,2,3,4,5,6,7,8] a [2 :: 3]会导致[3,6] 现在我想反过来说:[1,8] 上面的数组只是一个例子.解决方案应该适用于张量流中维度[批次,宽度,高度,通道]的更大矩阵.选择仅在频道上进行.我的矩阵也包含非唯一的实际值.我也无法进一步重塑它而不是二维([批次,渠道]) 解决方法
一种选择是通过测试范围索引来创建布尔索引:
import numpy as np start,step = 2,3 a[np.arange(len(a)) % step != start] # array([1,8]) 您可以使用tf.boolean_mask在tensorflow中类似地实现此目的: import tensorflow as tf a = tf.constant([1,8]) start,3 mask = ~tf.equal(tf.range(a.shape[-1]) % step,start) tf.boolean_mask(a,mask).eval() # array([1,8],dtype=int32) 如果a是ND张量,则可以使用boolean_mask指定轴;例如,用4D张量[批次,通道]来选择第四轴,即通道,你可以设置轴= 3: mask = ~tf.equal(tf.range(a.shape[-1]) % step,start) tf.boolean_mask(a,mask,axis=3) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |