2016-09-19 162 views
-1

我想從一個numpy的陣列得到片,將它們分配到更大的陣列中分得一杯羹。 切片應該是64長,並且應該從源數組中均勻地取出。 我試過如下:值分配給一個numpy的陣列

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 

什麼是最Python的方式來實現切片?

+0

你能舉個例子嗎? –

回答

2

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]]) 

其他在此做題已經探索了變化,試圖找到最快的,但它是很難去了解某種循環或列表理解。

我建議這個答案的工作,並帶回來一個新的問題,和一個小的工作示例,如果你認爲你需要更快的速度。