Lưu ý: Yêu cầu đảo ngược chuyển đổi tuple-to-mảng thông thường.Chuyển đổi mảng numpy thành tuple
Tôi phải chuyển đối số cho hàm (được gói C++) dưới dạng bộ lồng lồng nhau. Ví dụ, sau đây làm việc
X = MyFunction(((2,2),(2,-2)))
trong khi sau không
X = MyFunction(numpy.array(((2,2),(2,-2))))
X = MyFunction([[2,2],[2,-2]])
Thật không may, lập luận tôi muốn sử dụng đến với tôi như một mảng NumPy. Mảng đó luôn có kích thước 2xN cho một số N, có thể khá lớn.
Có cách nào dễ dàng chuyển đổi dữ liệu đó thành bộ tuple không? Tôi biết rằng tôi chỉ có thể lặp qua, tạo ra một tuple mới, nhưng sẽ thích nếu có một số truy cập tốt đẹp mảng numpy cung cấp.
Nếu không thể thực hiện điều này một cách độc đáo như tôi hy vọng, cách nào đẹp nhất để làm điều đó bằng cách lặp lại hoặc bất cứ điều gì?
Tổng quát tốt đẹp. Là một newbie python, mặc dù, tôi tự hỏi nếu nó được coi là phong cách tốt để sử dụng ngoại lệ cho một điều kiện đó là gần như là phổ biến như là nhà nước không đặc biệt. Ít nhất trong c + +, kiểm soát dòng chảy bởi các ngoại lệ thường bị cau mày. Nó sẽ là tốt hơn để kiểm tra nếu 'loại (a) == numpy.ndarray'? – Mike
Điều này khá phổ biến ở python vì khái niệm "duck-typing" và EAFT, ở đây: http://docs.python.org/glossary.html#term-duck-typing. Ưu điểm của phương pháp này là nó sẽ chuyển đổi bất kỳ chuỗi lồng nhau nào thành các bộ dữ liệu lồng nhau, không chỉ là một mảng. Một điều tôi nên làm mà tôi đã cố định là xác định lỗi nào tôi muốn được xử lý bởi khối ngoại trừ. –
Trong C++, các ngoại lệ chậm so với điều kiện vì nhiều lý do. Trong Python, chúng xấp xỉ về mặt hiệu năng - đây là một trong những nơi mà chúng ta phải kiểm tra trực giác C++ của chúng ta ở cửa. – dbn