0
我想定義一個類型爲numpy.ndarray
的包裝類。該屬性必須通過調用__init__()
來初始化。初始化類與numpy.ndarray屬性
該腳本按照預期爲1D陣列運行。然而,在多dimensionnal陣列的情況下,蟒蛇返回以下錯誤:only length-1 arrays can be converted to Python scalars
import numpy as np
class myArr(np.ndarray):
def __init__(self,Arr):
self.Arr = Arr
npArr = np.zeros((3)) # works
#npArr = np.zeros((3,5)) # does not work
print npArr
wrappedArr = myArr(npArr)
print wrappedArr.Arr
這到底是怎麼回事?
蟒蛇2.7.6,1.8.2 numpy的
謝謝您的回答!我實現這個包裝類的原因是,我有一個代碼,其中'numpy.roll()'經常被調用,通常在單個代碼行中多次調用。爲了提高代碼的可讀性,我想定義一個'__call __()'方法作爲替代。它會被定義爲'__call __(i,j):numpy.roll(self,[i,j])''。你認爲這是合適的方法嗎? –
我不認爲你需要經歷'ndarray'子類的麻煩,只需使用'self.arr'而不是'self'調用'numpy.call'即可。 – agmangas