首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么sum(4 >= my_array)打印6而不是10 (因为数组从0开始)?

为什么sum(4 >= my_array)打印6而不是10 (因为数组从0开始)?
EN

Stack Overflow用户
提问于 2022-10-26 14:35:12
回答 3查看 39关注 0票数 0
代码语言:javascript
复制
my_array = np.concatenate((np.arange(10**6), np.array([4])))
my_array

array([     0,      1,      2, ..., 999998, 999999,      4])
print(sum(4 >= my_array))

输出:6

这个打印语句将打印6,而不是我所理解的10 (0+1+2+3+4)

我假设和(4>=my_array)不等于或等于4的第一个元素之和,它以另一种方式工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-26 14:43:37

4 >= my_array正在测试数组中的值是否等于或低于4。由于数组中有6个等于或低于4的值,所以有6次Truesum()TrueFalse相加为0,这就是得到6的原因。

你想做什么

代码语言:javascript
复制
>>> sum(my_array[my_array<=4])
14

(虽然在本例中您得到14,因为您在最后连接了4,所以您有0+1+2+3+4+4)

票数 1
EN

Stack Overflow用户

发布于 2022-10-26 14:43:49

假设是print(sum(4 >= my_array)),则返回6

实际上有6个数值低于或等于4个,前5个值:

代码语言:javascript
复制
0, 1, 2, 3, 4

你在结尾添加的那个:4

如果您只是连接一个短数组,这是很容易看到的:

代码语言:javascript
复制
my_array = np.concatenate((np.arange(10), np.array([4])))
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4])
#        *  *  *  *  *                 *   6 values ≤ 4

但是为什么sum 给出6呢?,因为4 >= my_array返回布尔人[True, True, True, ..., False, True]。每个True代表1False代表0

你很想:

代码语言:javascript
复制
my_array[4>=my_array].sum()
# 14
票数 2
EN

Stack Overflow用户

发布于 2022-10-26 15:15:18

当您在数组中引用“4”时,它反而意味着数组的索引,而不是数组中的值:

代码语言:javascript
复制
example we say array[3]
array = [3, 1, 2, 0, 4]
  index |0 |1 |2 |3 |4
it outputs '0' from the array

' sum (4>=my_array)‘不像你想的那样工作,如果对象不可迭代,例如元组,'(4 >= my_array)’是关系关系,返回真假,它只检查'my_array‘是否等于或小于整数'4’,后者会导致错误,因为您试图比较元组(my_array)和int (4)的值,但是您可以访问数组中的特定项,例如:

代码语言:javascript
复制
print(my_array[4] >= my_array[1]) # *True
#if you were trying to compare values in a tuple but if you want to sum the values in an array just:*

print(sum(array)) # *10*

如果对象是可迭代的

我也不知道你想用(10**6)做什么,你是想用'my_array‘来总结它吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74209578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档