我有一个2d列表理解,它可以设置1或0,这取决于第一个occouring条件
由于它的速度相对较慢,我想知道是否有一个NumPy函数或一个库可以以更高效的方式加速它
注意:在相同的索引下,子阵列的长度仅相等
result = [
[1 if (ratUp >ratDown) else 0 if (ratDown>ratUp) else 0 if (pointsDown>pointsUp) else 1
for ratUp,ratDown,pointsUp,pointsDown
in zip(ratiosUpSlice,ratiosDownSlice,upPointsSlice,downPointsSlice)]
for ratiosUpSlice,ratiosDownSlice,upPointsSlice,downPointsSlice
in zip(RatiosUp, RatiosDown, UpPointsSlices, DownPointsSlices)]
可复制:
import numpy as np
LEN = 10000
temp = np.random.randint(1,high=100, size=LEN)
RatiosUp = [np.random.uniform(size=rand) for rand in temp]
RatiosDown = [np.random.uniform(size=rand) for rand in temp]
UpPointsSlices = [np.random.uniform(size=rand) for rand in temp]
DownPointsSlices = [np.random.uniform(size=rand) for rand in temp]
您可以修改处理方式,以便在numpy中快速执行所有操作,然后分割最终结果(如果确实需要)。您的数据没有任何基本的2D功能:每一项工作都是按元素完成的
让我们先看看如何生成输入数据。您可以将所有数据生成为数组而不是列表:
现在,将循环可视化为单个numpy操作应该很容易:
如果需要将结果拆分为数组:
如果您承诺使用
split
,则可以更简洁地编写整个操作:相关问题 更多 >
编程相关推荐