【发布时间】:2020-04-04 08:57:41
【问题描述】:
我是 python 新手。 我发现了一篇关于矢量化的有趣文章,所以我开始研究它。 虽然我能够做到这一点:
def cost(a, b):
"Return a-b if a>b, otherwise return a+b"
if a > b:
return a - b
else:
return a + b
cost_vector= np.vectorize(cost)
print(z([1,2,3],[3,4,5]))
输出:
[4 6 8]
我不能这样做:
ww = [[1,2,3,4,5,6],[2,2,3,4,5,6],[3,2,3,4,5,6],[4,2,3,4,5,6],[5,2,3,4,5,6],[6,2,3,4,5,6]]
def cost(ww, a, b):
if a > b:
return ww[a][b]
else:
return ww[b][a]
z = np.vectorize(cost)
print(z(ww, [1,2,3], [3,4,5]))
输出:
IndexError: invalid index to scalar variable.
我不知道如何映射到我的数组
谢谢
【问题讨论】:
-
这是什么文章?它似乎在没有足够的警告和重要细节的情况下建议
np.vectorize。 -
numpy初学者不应该使用np.vectorize。当使用快速编译的numpy方法无法执行操作时,这是一种备用方法。首先了解numpy基础知识。它不是一个速度工具,并且有许多给天真的用户带来问题的功能。
标签: python-3.x numpy vectorization