【发布时间】:2018-06-21 07:58:07
【问题描述】:
您好,在不使用循环的情况下,是否有更快、更简单的选项来执行以下代码?当增加乘数值时,计算时间很长。
import numpy as np
import random
import timeit
multiplier = 2
vectors_number = 4 * multiplier
variable_number = 6
input_matrix = np.random.uniform(-5, 5, (vectors_number, variable_number))
offset = np.arange(multiplier)[:, None]*4
winning_matrix = np.random.rand(multiplier, 4).argsort(1)[:, :4] + offset
out_matrix = np.zeros(shape=(multiplier, variable_number))
start = timeit.default_timer()
for i in range(winning_matrix.shape[0]):
for k in range(variable_number):
out_matrix[i][k] = input_matrix[winning_matrix[i][2]][k] -
input_matrix[winning_matrix[i][1]][k]
end = timeit.default_timer()
print('Computation time %f' % (end - start))
【问题讨论】: