提问人:Kankan2000 提问时间:10/6/2023 最后编辑:RomanPerekhrestKankan2000 更新时间:10/6/2023 访问量:37
Python 列表 - 返回列表中已知子字符串之前的第 n 个元素的列表
Python Lists - Return list of every nth element before known substring in a list
问:
我有一个这样的数组:
['6.00', '1.85', 'X', '2.25', '1.26', 'X', '6.50', '1.80', 'X', '6.50', '1.95', 'X', '34.00', '5.50']
有谁知道我如何在“X”之前返回每个 3 个元素的数组?
['6.00', '2.25', '6.50', '6.50']
我一直在通过以下代码删除每个第 2 个和第 3 个元素,但是当列表中最后一个“X”之后有更多元素或“X”不均匀分布时,它就会中断:
data = ['6.00', '1.85', 'X', '2.25', '1.26', 'X', '6.50', '1.80', 'X', '6.50', '1.95', 'X', '34.00', '5.50']
x = np.array(data)
x = np.delete(x, np.arange(1, x.size, 3))
x = np.delete(x, np.arange(1, x.size, 2))
答:
2赞
RomanPerekhrest
10/6/2023
#1
通过使用位置偏移(由 np.nonzero
找到),其中:x == 'X'
x[np.nonzero(x == 'X')[0] - 2]
array(['6.00', '2.25', '6.50', '6.50'], dtype='<U5')
评论
1赞
mozway
10/6/2023
只有一个缺点,如果你在第一场比赛之前没有足够的元素,你会得到负值并切出一个不正确的位置。为了避免这种用法和 .(否则不错)idx = np.nonzero(x == 'X')[0] - 2
x[idx[idx>0]]
评论