在两个ndarray上运行的numpy函数

时间:2019-04-24 16:26:50

标签: python numpy

给出两个ndarrays a = np.asarray([[0,1,2],[3,4,5]])b = np.asarray([[6,7,8],[9,10,11]]),我想编写一个在a和b上迭代的函数,这样

  1. 考虑了[0,1,2]和[6,7,8]
  2. 考虑了[3,4,5]和[9,10,11]

一个例子是采用

的函数
  1. [0,1,2]和[6,7,8]作为输入并输出0 * 6 + 1 * 7 + 2 * 8 = 23
  2. [3,4,5]和[9,10,11]作为输入并输出3 * 9 + 4 * 10 + 5 * 11 = 122

->(23,122)

有什么办法可以在numpy中有效地做到这一点? 我的想法是压缩两个数组,但是效率不高。

编辑:我正在寻找一种应用可定制功能myfunc(x,y)的方法。在上一个示例中,myfunc(x,y)对应于多重化。

3 个答案:

答案 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)

the proper output
    将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)