这是分散在答案和 我接受问题答案后写的评论。 总是欢迎提出支持,但是如果您支持此答案,请 也不要错过对senderle和(如果他写道) 一种)eryksun,他建议了以下方法。
问:是否可以将numpy数组映射到位?
答:可以,但不能使用单个数组方法。 您必须编写自己的代码。
下面的脚本比较了线程中讨论的各种实现:
import timeit
from numpy import array, arange, vectorize, rint
# SETUP
get_array = lambda side : arange(side**2).reshape(side, side) * 30
dim = lambda x : int(round(x * 0.67328))
# TIMER
def best(fname, reps, side):
global a
a = get_array(side)
t = timeit.Timer('%s(a)' % fname,
setup='from __main__ import %s, a' % fname)
return min(t.repeat(reps, 3)) #low num as in place --> converge to 1
# FUNCTIONS
def mac(array_):
for row in range(len(array_)):
for col in range(len(array_[0])):
array_[row][col] = dim(array_[row