2010-04-20 55 views
7

là có bất kỳ cách nào để tạo ra một hình thức đối tượng bất kỳ lớp học bên trong một mảng numpy ?. Một cái gì đó như:Đối tượng mảng với numpy

a = zeros(4) 

for i in range(4): 
    a[i]=Register() 

Cảm ơn

Trả lời

11

Vâng, bạn có thể làm điều này:

a = numpy.array([Register() for _ in range(4)]) 

Ở đây, a.dtypedtype('object').

Ngoài ra, nếu bạn thực sự cần phải dự trữ bộ nhớ cho mảng của bạn và sau đó xây dựng nó phần tử bằng phần tử, bạn có thể làm:

a = numpy.empty(shape=(4,), dtype=object) 
a[0] = Register() # etc. 
+0

@Mike: cảm ơn bạn vì đã phát hiện lỗi đánh máy trong giải pháp đầu tiên; những gì tôi có nghĩa là tất nhiên những gì bạn đưa vào giải pháp của bạn. Tôi đã quên xây dựng danh sách đầu tiên; nó bây giờ đã được sửa chữa. Đối với giải pháp thứ hai, tôi chuyển sang numpy.empty. – EOL

5

Các mục trong mảng NumPy đang gõ tĩnh, và khi bạn gọi zeros bạn tạo một mảng nổi. Để lưu trữ các đối tượng Python tùy ý, hãy sử dụng mã như

numpy.array([Register() for i in xrange(4)]) 

tạo một mảng với dtype=object, bạn cũng có thể chỉ định thủ công.

Hãy cân nhắc xem liệu bạn có thực sự muốn ăn tối trong trường hợp này hay không. Tôi không biết làm thế nào gần ví dụ này là trường hợp sử dụng của bạn, nhưng đôi khi một mảng numpy của đối tượng dtype, đặc biệt là một chiều một, sẽ làm việc ít nhất cũng như một danh sách.

Các vấn đề liên quan