gpt4 book ai didi

python - 等效于使用 numpy

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:41 26 4
gpt4 key购买 nike

最近在做一些工作,需要做如下操作。

def myfunc(a, b):
return a*b # some operation here

a = [1,2,3]
b = [2,4,6,8]
print [[myfunc(i, j) for i in a] for j in b]

我需要从一维数组创建一个二维数组,如上所示。
有人可以告诉我使用 numpy 操作来做到这一点的方法吗?

数组ab 非常长。所以我假设 numpy 会提高性能。

最佳答案

您可以使用 numpy broadcasting :

a = np.array([1,2,3])
b = np.array([2,4,6,8])
a = a[:, None]
b = b[None, :]

a * np.log(a/b)

ab 添加一个新轴(分别作为第二和第一轴)将使 a 的形状 ( 3, 1)b 的形状(1, 4)。然后,a/b 一个二维 (3, 4) 数组,其中第 i 列是 a[i]/b :

a/b
array([[ 0.5 , 0.25 , 0.16666667, 0.125 ],
[ 1. , 0.5 , 0.33333333, 0.25 ],
[ 1.5 , 0.75 , 0.5 , 0.375 ]])

然后您可以取逐点对数并乘以a。由于 np.log(a/b) 是 (3, 4) 而 a 是 (3, 1),a 将再次被广播到 (3, 4)。

一个小细节是,由于广播发生的方式,将第二个轴添加到 b 不是强制性的。尽管如此,为了清楚起见,我更愿意将其明确写出来。

关于python - 等效于使用 numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40649923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com