当前位置:  开发笔记 > 编程语言 > 正文

np.vectorize给我IndexError:标量变量的无效索引

如何解决《np.vectorize给我IndexError:标量变量的无效索引》经验,为你挑选了1个好方法。

尝试一些简单但令人沮丧的无效方法:

def myfunc(a,b):
  return a+b[0]

v = np.vectorize(myfunc, exclude=['b'])

a = np.array([1,2,3])
b = [0]

v(a,b)

这给我“ IndexError:标量变量的无效索引。” 在打印b时,该函数接收的b始终为0,而​​不是[0]。我可以指定哪些参数应被向量化,哪些参数应保持不变?



1> unutbu..:

当您使用excluded=['b']关键字参数b被排除在外。因此,你必须调用v与关键字参数,例如v(a=a, b=b)代替v(a, b)

如果您希望v使用排除第二个位置参数的位置参数调用,请使用

v = np.vectorize(myfunc)
v.excluded.add(1)

例如,

import numpy as np

def myfunc(a, b):
    return a+b[0]

a = np.array([1,2,3])
b = [0, 1]

v = np.vectorize(myfunc, excluded=['b'])
print(v(a=a, b=b))
# [1 2 3]

v = np.vectorize(myfunc)
v.excluded.add(1)
print(v(a, b))
# [1 2 3]

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有