【发布时间】:2019-06-18 19:44:36
【问题描述】:
我很难解决这个问题,主要问题是我正在运行模拟,所以主要禁止 lops,我有一个 numpy 数组 NxN,在这种情况下我的大约是 (10000x20) .
stoploss = 19.9 # condition to apply
monte_carlo_simulation(20,1.08,10000,20) #which gives me that 10000x20 np array
mask_trues = np.where(np.any((simulation <= stoploss) == True, axis=1)) # boolean mask
我需要一些代码来创建一个新的 len(10000) 向量,它返回一个包含每一行所有位置的数组,假设:
function([[False,True,True],[False,False,True]])
output = [[1,2],[2]]
同样,主要问题在于不使用循环。
【问题讨论】:
-
所以
output将是一个包含不同长度列表的列表。这将需要某种行迭代,即使它被埋在split -
你真的需要按行索引吗? (100000, 20) 布尔值有什么问题?您可以轻松地从掩码中获取行数(总和)。要使用列表列表,您必须进行迭代。该掩码也可以转换为
scipy.sparse矩阵。lil格式rows数组将是所需的“非零”列索引数组。 -
嗨 hpaulj,我需要准确的位置,因为我必须将每个位置与买入价和卖出价进行比较,我会丢失数据,只是计算它发生的次数或每次获得第一个排。我来自西班牙,所以凌晨 2 点我正在寻找一种有效的解决方案,而不是免费的迭代解决方案。
-
为什么要标记模拟?数据来源似乎与您的问题无关。我是否错过了一些相关的方式?
-
嗨 pjs,我标记它是因为这确实是模拟的一部分。不过我理解你的意思,我保证下次使用标签字段时会更准确。
标签: python python-3.x numpy vectorization simulation