我無法弄清楚如何使用CArray特徵。爲什麼這個類CArray初始化和賦值問題
from traits.api import HasTraits, CArray, Float,Int
import numpy as np
class Coordinate3D(HasTraits):
coordinate = CArray(Float(), shape=(1,3))
def _coordinate_default(self):
return np.array([1.,2.,3.])
顯然不是用我的_name_default()方法?
In [152]: c=Coordinate3D()
In [153]: c.coordinate
Out[153]: np.array([[ 0., 0., 0.]])
我會期待np.array([1,2,3])!該_name_default()似乎與詮釋
class A(HasTraits):
a=Int
def _a_default(self):
return 2
In [163]: a=A()
In [164]: a.a
Out[164]: 2
工作所以我在做什麼錯在這裏?另外,我無法分配值:
In [181]: c.coordinate=[1,2,3]
TraitError: The 'coordinate' trait of a Coordinate3D instance must be an array of
float64 values with shape (1, 3), but a value of array([ 1., 2., 3.]) <type
'numpy.ndarray'> was specified.
相同的錯誤消息與
In [182]: c.coordinate=np.array([1,2,3])
凱爾西,看到你的答案後,鍵入我自己的(咖啡休息時間沒有頁面刷新;-)。你是絕對正確的。 – Sven