【问题标题】:Assign value to a slice of a numpy array将值分配给 numpy 数组的切片
【发布时间】:2016-09-19 15:24:01
【问题描述】:

我想从一个 numpy 数组中获取切片并将它们分配给一个更大的数组。 切片应为 64 长,并应从源阵列中均匀取出。 我尝试了以下方法:

r = np.arange(0,magnitude.shape[0],step) 
magnitudes[counter:counter+len(r),ch] = magnitude[r:r+64]

我在尝试上述代码时收到以下错误:

TypeError: only integer arrays with one element can be converted to an index

实现切片最pythonic的方法是什么?

【问题讨论】:

  • 你能举个例子吗?

标签: python arrays numpy indexing


【解决方案1】:

magnitude[r:r+64] 其中r 是一个数组是错误的。切片中的变量必须是标量,magnitude[3:67],而不是magnitude[[1,2,3]:[5,6,7]]

如果你想收集多个切片,你必须这样做

In [345]: x=np.arange(10)
In [346]: [x[i:i+3] for i in range(4)]
Out[346]: [array([0, 1, 2]), array([1, 2, 3]), array([2, 3, 4]), array([3, 4, 5])]
In [347]: np.array([x[i:i+3] for i in range(4)])
Out[347]: 
array([[0, 1, 2],
       [1, 2, 3],
       [2, 3, 4],
       [3, 4, 5]])

其他 SO 问题已经探索了这方面的变化,试图找到最快的,但很难绕过某种排序循环或列表理解。

如果您认为需要更快的速度,我建议您使用此答案,然后再提出一个新问题和一个小的工作示例。

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2018-07-30
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 2016-04-18
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多