gpt4 book ai didi

python - 求和函数在python中的使用

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:50 24 4
gpt4 key购买 nike

x_d = np.linspace(-4, 8, 30)

print('x_d shape: ',x_d.shape)
print('x shape: ',x.shape)


density = sum((abs(xi - x_d) < 0.5) for xi in x)---------> difficulty in understanding statement

output:

x_d shape: (30,)
x shape: (20,)

我很难理解上面的陈述

对于 x 的每个值,我们从中减去 x_d,我们将得到单个值。但是我们密度为(30,)

我们如何得到密度维度为 (30,)

最佳答案

表达式

xi - x_d

将使用 NumPy broadcasting使两个物体的形状一致。在这种情况下,这意味着将标量值 xi 视为与 x_d 具有相同值和相同维度的数组。

abs 函数和小于比较将按元素与 NumPy 数组一起工作,因此表达式

(abs(xi - x_d) < 0.5)

应该生成一个长度为 30 的数组(与 x_d 大小相同),其中该数组的每个条目要么是 True,要么是 False,具体取决于在应用于 x_d 的每个元素的条件下。

这对 xi 的多个值重复进行,导致多个不同的长度为 30 的数组。

在这些数组上调用 sum 的结果是它们按元素相加(并且还由于广播的运气,因为 sum 函数具有默认初始值0,第一个数组按元素添加到 0,保持不变)。

因此在最终结果中,它将是一个长度为 30 的数组,其中数组的第 0 项根据 的第 0 个元素统计有多少 xi 值满足绝对值条件x_d。输出数组的第 1 项将计算 x_d 的第一个元素上满足绝对值条件的 xi 值的数量,依此类推。

下面是一些测试数据的例子:

In [31]: x_d = np.linspace(-4, 8, 30)

In [32]: x = np.arange(20)

In [33]: x
Out[33]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])

In [34]: density = sum((abs(xi - x_d) < 0.5) for xi in x)

In [35]: density
Out[35]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1])

关于python - 求和函数在python中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47554592/

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