假设我有以下函数
def my_func(a,b):
res = a[0] + a[1]*b
return res
我知道如何把它应用到矩阵的一个元素上:
import numpy as np
mydata = np.matrix([[1, 2], [3, 4]])
my_par = np.array([1, 2])
res = my_func(my_par,mydata[1,1])
现在我想把它应用到矩阵mydata的所有元素上,我已经试过了
myfunc_vec = np.vectorize(my_func)
res = myfunc_vec(my_par,mydata)
出现以下错误:
in my_func
res = a[0] + a[1]*b
IndexError: invalid index to scalar variable.
我认为这个错误是由于我向函数传递了两个参数。
有没有什么方法可以将我的函数应用到矩阵的所有元素而不出错?
2条答案
按热度按时间6rqinv9w1#
我认为最简单的方法是使用
for
循环,并确保将np.matrix()
替换为np.array()
。输出:
希望能有所帮助!
ndh0cuux2#
你不需要做任何事情。只要传递
my_data
而不是my_data[1,1]
,剩下的一切都会到位。输出: