我有一個串列(或numpy的陣列),讓我們把它my_list與長度100。我有另一個串列,flag_list以相同的長度呼叫,由 1 和 0 組成。我希望我new_list的元素my_list在 flag_list 的相應位置有 1。不知何故,洗掉那些有 0 標志的人。
在不撰寫 for 回圈的情況下,是否有一種簡短的方法可以做到這一點?
我還有一個 2d numpy 陣列,我想根據標志排除一些原始資料。
提前致謝
uj5u.com熱心網友回復:
您可以使用串列理解和列舉來完成此操作
my_list = list('abcde')
flag_list = [0,1,0,1,1]
new_list = [val for i, val in enumerate(my_list) if flag_list[i]]
print(new_list)
輸出
['b', 'd', 'e']
uj5u.com熱心網友回復:
為此可以使用布爾索引。將 0,1s 串列轉換為布爾陣列,然后進行索引。
import numpy as np
my_list = np.arange(10)
flag_list = np.random.randint(2,size=(1,10))
flag_list = flag_list[0]
print(" my_list", my_list)
print("flag_list", flag_list)
bool_list = flag_list == 1
print("bool_list", bool_list)
print("my_list[bool_list]", my_list[bool_list])
輸出:
my_list [0 1 2 3 4 5 6 7 8 9]
flag_list [0 0 1 1 1 0 0 1 1 0]
bool_list [False False True True True False False True True False]
my_list[bool_list] [2 3 4 7 8]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/326418.html
