例如,Numpy数组允许索引列表
a = np.arange(1000)
l = list([1,44,66,33,90,345])
a[l] = 22
但是,如果我们想要使用多切片索引或索引加切片,则此方法不起作用.
a = np.arange(1000)
l = list([1,slice(200,300),slice(500,600) ])
a[l] = 22
此代码返回一条错误消息:
IndexError: too many indices
我的问题很简单:
你知道如果在numpy或scipy中存在使用这种索引的有效方法吗?
或者使用这样的索引方法有什么好方法?
不要忘记切片的使用会产生非常快的代码;我的问题是拥有尽可能快的代码.
最佳答案
我想到了什么:
a = np.arange(1000)
l = np.hstack(([1,90],np.arange(200,np.arange(500,600)))
a[l] = 22
我不确定这是否是最简单的方法,但它确实有效.
编辑:你说这比使用切片慢;但是您无法使用任意值创建切片对象.也许你应该做几个任务然后:
%timeit a[np.hstack(([1,600)))] = 22
10000 loops,best of 3: 39.5 us per loop
%timeit a[[1,90]] = 22; a[200:300] = 22; a[500:600] = 22
100000 loops,best of 3: 18.4 us per loop
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。