2017-03-16 62 views
1

我更新了舊版本的numpy,不幸的是我沒有檢查哪一個版本到版本1.12.0。 我有一個腳本,工作完全正常的更新。它使用下面的代碼行:更新numpy後,np.lib.stride_tricks.as_strided給出了錯誤

from numpy.lib.stride_tricks import as_strided as _ast 

    raw_shp = _ast(raw, shape=sh, strides=stride).squeeze() 

給出了錯誤:

File "/usr/local/lib/python2.7/dist-packages/numpy/lib/stride_tricks.py", line 102, in as_strided 
     array = np.asarray(DummyArray(interface, base=x)) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py", line 531, in asarray 
    return array(a, dtype, copy=False, order=order) 
TypeError: 'float' object cannot be interpreted as an index 

什麼_ast或np.asarray改變,以提高這個錯誤,我能做些什麼來避免呢?

感謝任何暗示

+1

'sh'的價值是什麼? – 9000

+0

它是(12501.0,2692,2,4) – uetli

+0

確保'sh'中的所有值實際上是整數,而不是具有整數值的浮點。或者修復如何創建'sh'(推薦),或者做一些類似'shape = tuple(int(i)for i in sh)''。 –

回答

1

顯然較新版本numpy的是關於使用浮點數時索引挑剔。 將索引編制的所有浮點數轉換爲整數解決了問題 像Warren Weckesser所說: 確保sh中的所有值實際上都是整數,而不是具有整數值的浮點。要麼修復sh是如何創建的(推薦),要麼做一些類似shape = tuple(int(i)for i in sh)。