【发布时间】:2017-06-10 13:21:28
【问题描述】:
我有一个包含负元素块和正元素块的数组。一个非常简化的例子是一个数组a,看起来像:array([-3, -2, -1, 1, 2, 3, 4, 5, 6, -5, -4])
(a<0).sum() 和 (a>0).sum() 给了我负面和正面元素的总数,但我如何按顺序计算它们?我的意思是我想知道我的数组包含前 3 个负元素,6 个正元素和 2 个负元素。
这听起来像是某个地方已经讨论过的主题,并且可能存在重复,但我找不到。
一种方法是在整个数组的循环中使用numpy.roll(a,1),并计算给定符号出现在例如数组滚动时的第一个元素,但它看起来不是很 numpyic(或 pythonic),对我来说也不是很有效。
【问题讨论】:
-
这是类似的:/questions/42129021/counting-consecutive-1s-in-numpy-array
-
输出必须是什么,特别是格式?
-
@Julien 这是一个提示,但不是我真正要问的@Divakar:对于我提供的示例,输出可能是一个数组
array([3,6,2])(我可以很容易地知道第一个元素的符号我的输入数组,因此对应于我的输出数组的第一个元素的符号) -
由于我们在问题中讨论效率,因此在我的帖子中添加了一个计时部分。