【发布时间】:2020-06-18 11:38:16
【问题描述】:
我必须序列(例如)和一个函数:
import numpy as np
a = np.arange(10,21)
b = np.arange(10,16)
def f(x,y):
return x**2+y*3
我想构造一个矩阵(10x5),这样它的每个元素都将是这些元素上的函数迭代的结果。因此,例如,矩阵的 2nd 行和 3rd 列的元素将是:
matrix[1,2]
>>> 157
即f(11,12) = 11**2 + 12*3 = 121 + 36 = 157。
我尝试使用嵌套循环(两个“for”循环),但它太慢了。 numpy 有没有办法一次执行操作,例如一个 np 函数,它以 a、b 和 f 作为参数并返回所需的结果?
非常感谢:)
【问题讨论】:
-
def f(x,y): return x[:,None]**2+y*3? -
如果
x是 (m,1) 数组,y是 (n,) 形状,则加法和乘法等操作将创建 (m,n) 数组。 (n,) 自动扩展为 (1,n)。这称为broadcasting。 -
您不想要一个 11x6 矩阵吗?或者也许改变你的 arange() 的界限
标签: python numpy iteration vectorization