Xuất phát từ một nền tảng của Matlab/Octave, tôi đã cố gắng tìm hiểu một cách sần sùi. Một điều đã vấp ngã tôi nhiều lần là sự khác biệt giữa các vectơ và mảng đa chiều. Đối với câu hỏi này tôi sẽ đưa ra một vấn đề cụ thể mà tôi đang gặp phải, nhưng tôi sẽ có nhiều trách nhiệm nếu ai đó cũng có thể giải thích bức tranh tổng quát hơn đằng sau các mảng đơn chiều theo dạng gọn gàng, tại sao bạn muốn chúng ở nơi đầu tiên, để tránh rắc rối khi trộn đơn và đa chiều mảng, vv Dù sao, câu hỏi:Làm cách nào để duy trì định hướng hàng/cột của vectơ ở dạng khối u?
tôi có một 2-D mảng gọi là X:
X = numpy.arange(10).reshape(2,5)
và tôi muốn lấy cột cuối cùng của X và lưu nó dưới dạng mảng 2-D khác (ví dụ: vectơ cột) được gọi là Y. Cách duy nhất tôi có thể thực hiện cho điều này là:
Y = numpy.atleast_2d(X[:,4]).T
nhưng tôi không thích điều đó cho một vài lý do:
tôi không cảm thấy như tôi cần phải nói với nó để transpose vector khi định hướng nên được ngụ ý trong X [:, 4].
Sử dụng atleast_2D dường như quá cồng kềnh khi sử dụng lặp đi lặp lại trong mã nơi tình huống này sẽ xuất hiện rất nhiều. Có vẻ như tôi đang làm gì đó sai.
Vì vậy, trong ngắn hạn, có cách nào tốt hơn không?
Cảm ơn.
'np.atleast_2d (x) .T' cũng có thể được viết' x.reshape (-1, 1) '. Nếu bạn làm điều đó rất nhiều, nó có thể là một ý tưởng tốt để xác định một helper cho nó, 'def ascolumn (x): return x.reshape (-1, 1)'. –