Trong NumPy chúng ta thường sử dụng các mảng 1d để đại diện cho vectơ, và chúng tôi đối xử với nó như hoặc là một vector hàng hoặc vectơ cột tùy thuộc vào ngữ cảnh, ví dụ:
In [13]: a = np.array([1, 2, 3])
In [15]: b = np.array([4, 5, 6])
In [16]: np.cross(a, b)
Out[16]: array([-3, 6, -3])
In [17]: np.dot(a, b)
Out[17]: 32
Bạn có thể lưu trữ vectơ làm mảng 2d, điều này hữu ích nhất khi bạn có bộ sưu tập vectơ bạn muốn để điều trị theo cách tương tự. Ví dụ, nếu tôi muốn vượt qua 4 vectơ trong một với 4 vectơ trong b. Theo mặc định numpy giả định các vectơ là dọc theo các kích thước cuối cùng nhưng bạn có thể sử dụng các đối số axisa và axisb để xác định rõ ràng rằng các vectơ nằm dọc theo thứ nguyên đầu tiên.
In [26]: a = np.random.random((3, 4))
In [27]: b = np.random.random((3, 4))
In [28]: np.cross(a, b, axisa=0, axisb=0)
Out[28]:
array([[-0.34780508, 0.54583745, -0.25644455],
[ 0.03892861, 0.18446659, -0.36877085],
[ 0.36736545, 0.13549752, -0.32647531],
[-0.46253185, 0.56148668, -0.10056834]])
Nguồn
2012-02-12 17:34:18
Thú vị, cảm ơn. Có thể thay đổi trục mặc định thành 0 không? – Ingo
@thomas: Không phải là tôi biết. Nhưng nó thực sự là một nhiệm vụ khó khăn để thực hiện theo các quy ước của thư viện khi xác định các vectơ của bạn, hoặc để xác định rõ ràng thứ tự của họ cho cuộc gọi? – talonmies
Không phải không, nhưng tôi đang viết mã cho một số sinh viên và bởi sự vexperience nó gây nhầm lẫn cho họ nếu ví dụ vectơ là tất cả các vectơ hàng khi chúng được sử dụng để vectơ cột. – Ingo