python中sum函数的使用

python中sum函数的使用,python,pandas,numpy,Python,Pandas,Numpy,我很难理解上述陈述 对于x的每个值,我们从中减去x_d,得到一个值。但我们的密度为(30,) 我们如何得到密度维数为(30,)的表达式 output: x_d shape: (30,) x shape: (20,) 将使用NumPy使两个对象的形状一致。在这种情况下,它意味着将标量值xi视为一个具有所有相同值和相同维数的数组,就像xud一样 abs函数和小于比较将在NumPy数组中按元素工作,因此表达式 xi - x_d 谢谢你的回复。我不明白这句话对于席的多个值,这会重复,导致多个不

我很难理解上述陈述

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

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

的表达式

output:

x_d shape:  (30,)
x shape:  (20,)
将使用NumPy使两个对象的形状一致。在这种情况下,它意味着将标量值
xi
视为一个具有所有相同值和相同维数的数组,就像
xud
一样

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

xi - x_d

谢谢你的回复。我不明白这句话对于席的多个值,这会重复,导致多个不同的长度-30个数组。对于x的每个元素重复For循环,在本例中,我们得到了x的每个元素的20个形状数组(30,)的列表,并且我们对所有20个形状数组(30)求和。我的理解是对的。顺便说一下,有一种方法可以打印每个长度为30的数组,每个值为x。ThanksImagine只取
x
的第一个值(在
sum
中循环的第一次迭代)。让我们假设这个值为0。然后您将计算
0-x\u d
。在NumPy中,这将生成一个数组,该数组的值为
[0-xud[0]、0-xud[1]、…]
。所以我们得到了一个长度为30的数组。让我们把它放在脑后,继续下一个迭代,它将来自条目
x[1]
(第二个条目在
x
)。我们重复这个过程,得到
[x[1]-x\ud[0],x[1]-x\ud[1],…]
。因此,在内部代码< SUM < /COD>,循环的每个通道都为该迭代创建了一个整个长度为30的数组。如果要打印中间数组,则可以使用X< X中的代码>:打印((ABS席席(X-XYD)< 0.5))< /C>。您甚至可以手动将其中的3个保存到一个列表中,如下所示:
test=[(abs(x[0]-x\ud)<0.5),(abs(x[1]-x\ud)<0.5),(abs(x[2]-x\ud)<0.5)]
,然后尝试
sum(test
,看看会发生什么。谢谢您的帮助。现在它有助于理解语句。
xi - x_d
(abs(xi - x_d) < 0.5)
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])