给出两个ndarrays a = np.asarray([[0,1,2],[3,4,5]])
和b = np.asarray([[6,7,8],[9,10,11]])
,我想编写一个在a和b上迭代的函数,这样
一个例子是采用
的函数->(23,122)
有什么办法可以在numpy中有效地做到这一点? 我的想法是压缩两个数组,但是效率不高。
编辑:我正在寻找一种应用可定制功能myfunc(x,y)
的方法。在上一个示例中,myfunc(x,y)
对应于多重化。
答案 0 :(得分:0)
c = a * b
sum1 = c[0].sum()
sum2 = c[1].sum()
如果您想要算法方法(自定义函数)
a = np.asarray([[0,1,2],[3,4,5]])
b = np.asarray([[6,7,8],[9,10,11]])
for i in range(a.shape[0]) :
s = 0
for j in range(a.shape[1]) :
s = s + a[i][j]*b[i][j]
print(s)
答案 1 :(得分:0)
将numpy导入为np
a = np.asarray([[0,1,2],[3,4,5]])
b = np.asarray([[6,7,8],[9,10,11]])
c = a * b
打印(sum(c [0]),sum(c 1))
ans-> 23,122
答案 2 :(得分:0)
不需要同时使用zip和array,您需要了解numpy软件包可以帮助您很好地处理矩阵。因此,您需要有关矩阵的基本知识,我建议您从斯坦福大学cs231n的链接http://cs231n.github.io/python-numpy-tutorial/中学习。 这是一个可以解决您的问题的函数:
import numpy as np
def interates(matrix_a, matrix_b):
product = matrix_a*matrix_b
return (np.sum(product,1))
值乘积包含一个具有相同形状的新矩阵,矩阵的形状为matrix_a和matrix_b,其中的每个元素都是matrix_a[i][j] * matrix_b[i][j]
的结果,其中i和j从0到matrix_a.shape[0]
和matrix_a.shape[1]
现在检查您的示例
a = np.asarray([[0,1,2],[3,4,5]])
b = np.asarray([[6,7,8],[9,10,11]])
result = interates(a,b)
打印结果
>> print(result)
>> [23 122]
如果要元组
>> result = tuple(result)
>> print(result)
>> (23, 122)