Je suis débutant et je suis sûr que cette question est trop simple. J'essaye de tester des vues de mémoire dans Cython pour apprendre à les connaître beaucoup mieux. Dans mon code je passe chaque élément de vue de mémoire (comme [1,2]
) comme l'élément cy
de classe move
.Comment accéder à l'élément de vue de type typé-mémoire d'une classe déclarée dans Cython?
cdef class cy:
cdef public long[:] move
def __init__(self, move):
self.move = move
lst = []
for i in range(100):
lst.append([i, i+1])
cdef long[:, :] memview = np.asarray(lst)
b0 = cy(memview[0])
print(b0.move)
Lorsque j'imprime les résultats. Je reçois ceci:
<MemoryView of 'ndarray' object> # I expect for sth like [12, 13]
J'ai besoin cy
imprime classe une liste. Comment puis-je le réparer? il y a un autre problème qui se produit à moi quand j'utilise ce code:
cdef class parent:
cdef public:
list children
list moves
def __init__(self):
self.children = []
def add_children(self, moves):
cdef int i = 0
cdef int N = len(moves)
for i in range(N):
self.children.append(cy(moves[i]))
cdef int[:, :] moves = np.asarray(lst, dtype=np.int32)
obj = parent()
for move in moves:
obj.add_children(move)
Après l'exécution de ce code, je reçois toujours cette erreur:
TypeError: a bytes-like object is required, not 'int'
. Quelle est la cause de cette erreur et comment puis-je réparer celle-ci?
merci. J'ai corrigé l'erreur. –