gpt4 book ai didi

python - 如何使用 Excel 等函数修改 numpy 数组

转载 作者:行者123 更新时间:2023-11-30 21:54:06 26 4
gpt4 key购买 nike

我对 numpy 有点不熟悉,并且无法找到我想要对数组进行的确切修改类型。我有一个像这样的数组:

[[1 2 3 4]
[4 5 6 7]

我想要做的是应用一个函数来更改数组中的每个值,但在函数本身中使用数组的值(即在 Excel 中,您可以编写一个函数并使用该函数修改您的值)。为此,我一直在尝试使用 numpy.apply_along_axis 来执行此操作,但我无法将其合并到循环中以创建所需的输出。虽然下面的代码不起作用,但这是我到目前为止的逻辑流程(假设我将上面的矩阵标记为 M):

for values in M:
def fun(a):
return a[values]/(a[values]+a[0])
q=np.apply_along_axis(fun,1,M)

其背后的想法是,它将获取每行的每个元素,并将其除以该元素+该行的第一个元素的总和。即:

[[1/(1+1) 2/(2+1) 3/(3+1) 4/(4+1)]
[4/(4+4) 5/(5+4) 6/(6+4) 7(7+4)]]]

最佳答案

您不需要 for 循环。只需利用 numpy broadcasting :

import numpy as np
arr = np.array([[1,2,3,4],[4,5,6,7]])

arr / (arr + arr[:,:1])
# array([[0.5 , 0.66666667, 0.75 , 0.8 ],
# [0.5 , 0.55555556, 0.6 , 0.63636364]])
<小时/>

这里 arr[:,:1] 获取数组的第一列,但保持形状为二维,然后将其与 arr 本身相加,从而得到分母你需要:

arr[:, :1]
# array([[1],
# [4]])

arr + arr[:, :1]
# array([[ 2, 3, 4, 5],
# [ 8, 9, 10, 11]])

关于python - 如何使用 Excel 等函数修改 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419954/

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