python中sum函数的使用
我很难理解上述陈述 对于x的每个值,我们从中减去x_d,得到一个值。但我们的密度为(30,) 我们如何得到密度维数为(30,)的表达式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 谢谢你的回复。我不明白这句话对于席的多个值,这会重复,导致多个不
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])