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
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
Vâng, bạn có thể làm điều này:
a = numpy.array([Register() for _ in range(4)])
Ở đây, a.dtype
là dtype('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.
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.
@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