python – 除了每个n之外切片每个项目

python – 除了每个n之外切片每个项目,第1张

概述在张量流中,可以使用切片符号[:: n]选择每个第n个项目. 但如何做相反的事情呢?我想选择除每个项目之外的所有项目. 例如: a = [1, 2, 3, 4, 5, 6, 7, 8] a [2 :: 3]会导致[3,6] 现在我想反过来说:[1,2,4,5,7,8] 上面的数组只是一个例子.解决方案应该适用于张量流中维度[批次,宽度,高度,通道]的更大矩阵.选择仅在频道上进行.我的矩阵也包含非唯 在张量流中,可以使用切片符号[:: n]选择每个第n个项目.

但如何做相反的事情呢?我想选择除每个项目之外的所有项目.

例如:

a = [1,2,3,4,5,6,7,8]

a [2 :: 3]会导致[3,6]

现在我想反过来说:[1,8]

上面的数组只是一个例子.解决方案应该适用于张量流中维度[批次,宽度,高度,通道]的更大矩阵.选择仅在频道上进行.我的矩阵也包含非唯一的实际值.我也无法进一步重塑它而不是二维([批次,渠道])

解决方法 一种选择是通过测试范围索引来创建布尔索引:

import numpy as npstart,step = 2,3a[np.arange(len(a)) % step != start]# array([1,8])

您可以使用tf.boolean_mask在tensorflow中类似地实现此目的:

import tensorflow as tfa = tf.constant([1,8])start,3mask = ~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)
总结

以上是内存溢出为你收集整理的python – 除了每个n之外切片每个项目全部内容,希望文章能够帮你解决python – 除了每个n之外切片每个项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存