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的第一个元素之和,它以另一种方式工作?
发布于 2022-10-26 14:43:37
4 >= my_array正在测试数组中的值是否等于或低于4。由于数组中有6个等于或低于4的值,所以有6次True。sum()将True和False相加为0,这就是得到6的原因。
你想做什么
>>> sum(my_array[my_array<=4])
14(虽然在本例中您得到14,因为您在最后连接了4,所以您有0+1+2+3+4+4)
发布于 2022-10-26 14:43:49
假设是print(sum(4 >= my_array)),则返回6。
实际上有6个数值低于或等于4个,前5个值:
0, 1, 2, 3, 4你在结尾添加的那个:4
如果您只是连接一个短数组,这是很容易看到的:
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代表1,False代表0。
你很想:
my_array[4>=my_array].sum()
# 14发布于 2022-10-26 15:15:18
当您在数组中引用“4”时,它反而意味着数组的索引,而不是数组中的值:
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)的值,但是您可以访问数组中的特定项,例如:
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‘来总结它吗?
https://stackoverflow.com/questions/74209578
复制相似问题