In [4]: vals = np.random.rand(10000)
In [6]: %timeit [1 if i >= 0.5 else 0 for i in vals]
1.26 ms ± 105 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [7]: %timeit [int(i >= 0.5) for i in vals]
5.18 ms ± 61 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [8]: %timeit (vals >= 0.5).astype(int)
12.9 µs ± 308 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
您可以使用Python的三元运算符和列表理解:
或者使用numpy(总是一个好的选择):
一些时间安排:
和往常一样,numpy获胜,然后是三进制,然后是int转换。你知道吗
可以使用
int()
将布尔值转换为0
或1
:相关问题 更多 >
编程相关推荐