我有以下 np.array:
my_array=np.array([False, False, False, True, True, True, False, True, False, False, False, False, True])
如何使用與 True 元素對應的索引的串列理解來制作串列。在這種情況下,我正在尋找的輸出將是 [3,4,5,7,12]
我嘗試了以下方法:
cols = [index if feature_condition==True for index, feature_condition in enumerate(my_array)]
但不作業
uj5u.com熱心網友回復:
為什么特別是串列理解?
>>> np.where(my_array==True)
(array([ 3, 4, 5, 7, 12]),)
這可以完成作業并且速度更快。串列解決方案是:
>>> [index for index, feature_condition in enumerate(my_array) if feature_condition == True]
[3, 4, 5, 7, 12]
對此接受的答案解釋了排序的混亂:串列理解中的 if/else
我很好奇這些差異:
def np_time(array):
np.where(my_array==True)
def list_time(array):
[index for index, feature_condition in enumerate(my_array) if feature_condition == True]
timeit.timeit(lambda: list_time(my_array),number = 1000)
0.007574789000500459
timeit.timeit(lambda: np_time(my_array),number = 1000)
0.0010812399996211752
uj5u.com熱心網友回復:
if 的順序不正確,應該排在最后——
$more numpy_1.py
import numpy as np
my_array=np.array([False, False, False, True, True, True, False, True, False, False, False, False, True])
print (my_array)
cols = [index for index, feature_condition in enumerate(my_array) if feature_condition]
print (cols)
$python numpy_1.py
[False False False True True True False True False False False False
True]
[3, 4, 5, 7, 12]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472715.html
標籤:python-3.x 列表 列表理解
上一篇:如何將值附加到串列?
