编辑,最初我认为这是传递类的问题,但后来意识到这是因为当我做val = np.zeros((x,y))我不能为val [i]赋值,我发现原因是因为虽然文档http://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html说>>>
np.zeros((2, 1))
返回
array([[ 0.],
[ 0.]])
但是当我做的时候
ara = np.zeros((2,2))
print ara
我得到了
[[ 0. 0.]
[ 0. 0.]]
缺少','并且无法索引
我有一些带有一些初始化值的课程
class myclass():
def __init__(self):
self.stuffone = 0
self.stufftwo = []
然后我有一些功能
def myfunc(stuff):
getstuff = myclass()
getstuff.stuffone = stuff[0]
getstuff.stufftwo = [stuff[1],stuff[0]]
return getstuff
val = np.zeros((1,3))
val[0] = myfunc(stuff)
所以我想调用myfunc,传递一些变量,然后它应该创建一个类实例并将它返回给我。到目前为止我看到的是myfunc内部,我打印getstuff并给出
<__main__.myclass instance at 0x000000000486CC08>
所以这对我有意义,但是,当我返回getstuff时,返回的值只是垃圾,我想
[ 1.09268349e-317 1.09268349e-317 1.09268349e-317]
答案 0 :(得分:2)
你不能使用numpy数组来存储像这样的类的实例。 看看文档!
=====
zeros
=====
Definition: zeros(shape, dtype=float, order='C')
Type: Function of numpy.core.multiarray module
[...]
Returns
-------
out : ndarray
Array of zeros with the given shape, dtype, and order.
您创建的数组类型为float
,而不是object
类型。
尝试:
val = numpy.zeros((1,3),numpy.dtype(object))
val[0] = myfunc(stuff)
print val[0,0]
修改强>
请注意!
这有所不同:
>>> ara = np.zeros((2,2))
>>> ara
array([[ 0., 0.],
[ 0., 0.]])
>>> print ara
[[ 0. 0.]
[ 0. 0.]]
答案 1 :(得分:2)
np.zeros()
没有错。您错过了逗号,因为您使用的是print ara
,而不仅仅是ara
,后跟输入。这使得Python打印出数组的“字符串”表示,与文档中显示的“repr”略有不同。此显示字符串不会影响数组的行为。
你的代码试图将任意“东西”放入一个numpy数组中。数组不是那样工作的,它们是键入的,只能接受正确类型的数据。 np.zeros((2, 2))
返回float64
的二维数组,因此您只能在其中放置浮点数。