Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.6 numpy交互数组对象错误_Python_Numpy - Fatal编程技术网

Python 2.6 numpy交互数组对象错误

Python 2.6 numpy交互数组对象错误,python,numpy,Python,Numpy,我有一个多维的对象数组。我想使用nditer迭代器对对象进行交互。 下面是一个代码示例: import numpy as np class Test: def __init__(self,a): self.a = a def get_a(self): return self.a b = np.empty((2,3),dtype = object) t_00 = Test(0) t_01 = Test(1) t_11 = Test (11)

我有一个多维的对象数组。我想使用nditer迭代器对对象进行交互。 下面是一个代码示例:

import numpy as np

class Test:
    def __init__(self,a):
        self.a = a
    def get_a(self):
        return self.a

b = np.empty((2,3),dtype = object)

t_00 = Test(0)
t_01 = Test(1)
t_11 = Test (11)

b[0,0] = t_00
b[0,1] = t_01
b[1,1] = t_11

for item in np.nditer(b,flags = ["refs_ok"]):
    if item:
        print item.get_a()
我希望“项”包含可以用来访问数据的对象引用。 但是我得到了以下错误:AttributeError:'numpy.ndarray'对象没有属性'get_a'
我的问题是如何通过数组访问数组中的对象?

迭代的array.flat方法将起作用,并且可以确认这是否如您所期望的那样起作用

for item in b.flat:
    if item:
        print item.get_a()

使用
nditer
对数组进行迭代,可以将原始数组的单元格视为0维数组。对于非对象数组,这几乎等同于生成标量,因为0维数组的行为通常类似于标量,但这不适用于对象数组

如果您决定为此执行
nditer
,则可以使用
item()
方法从0维视图中提取元素:

for element in np.nditer(b,flags = ["refs_ok"]):
    element = element.item()
    if element:
        print(element.get_a())

我在代码中看到的一个问题是get_a需要返回self.a,而不是a。你是对的。然而,我有一个基本问题,我根本无法访问“测试对象”。似乎每个“项目”都是指一个numpy.ndarrayTanks Jason!不过,我仍在尝试了解如何使用nditer迭代器。如果我有一个带有正则数的数组,它可以正常工作。当我有对象时,就会出现问题。但我可以看到nditer正在重新调用正确的对象地址,但可能是错误的类型。遗憾的是,如果您打算修改对象数组项,这将不起作用。