由两个numpy索引数组给出的索引范围/切片

时间:2017-02-02 22:34:26

标签: python numpy numpy-broadcasting

我有一个数据向量x,以及两个索引向量leftrightleftright中的值对应我想要定义的切片的下限值和上限值。

我可以这样写:

for l, r in zip(left, right):
     z = x[l:r]
     # Compute with z here

但这比任何假设的numpy解决方案要慢,因为在python中索引或迭代numpy数组通常很慢。要看到这个比较

python3 -m timeit -s "import numpy as np; x = np.arange(1000)" "np.sum(x)"
1000000 loops, best of 3: 1.9 usec per loop

python3 -m timeit -s "import numpy as np; x = np.arange(1000)" "sum(x)"
10000 loops, best of 3: 69 usec per loop

因此,左右任何python迭代都会减慢速度。我想知道是否可以使用更加惯用的基于numpy的索引和工具来做到这一点。

编辑:

有一个不太常见的问题实例的解决方案。如果leftright left[n + 1] == right[n] 0 < n < len(left) + 1 left,则rightx形成create keyspace demo WITH REPLICATION = {'class' : 'SimpleStrategy','replication_factor': 3 }; USE ycsb; create table usertable ( y_id varchar primary key, field0 varchar, field1 varchar, field2 varchar, field3 varchar, field4 varchar, field5 varchar, field6 varchar, field7 varchar, field8 varchar, field9 varchar); 的分区。分裂点可以由单个索引数组表示。在这种情况下,您可以使用numpy.split

0 个答案:

没有答案