Nhân hóa vô hướng: Nhân vô hướng có thể được biểu diễn bằng cách nhân một lượng vô hướng với tất cả các phần tử trong ma trận vectơ.
Mã: Mã Python giải thích phép nhân vô hướng
40
41
40
43
40
45
[ 12 76 -61]8
[ 12 76 -61]9
>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
0>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
1>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
247
>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
4>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
5>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
6>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
5>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
8>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
9480
47
482
483
47
485
486
487
488
47
[ 12 76 -61]9
>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
5[ 12 76 -61]0
>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
5424
46
47
48
49
[ 12 76 -61]0
[ 12 76 -61]1
[ 12 76 -61]2
403
413
47
[ 12 76 -61]5
[ 12 76 -61]6
[ 12 76 -61]7
46
475
[ 12 76 -61]6
427
[ 12 76 -61]6
429
47
401
402
Đầu ra:
Nhân hóa vô hướng: Nhân vô hướng có thể được biểu diễn bằng cách nhân một lượng vô hướng với tất cả các phần tử trong ma trận vectơ.
40
41
40
43
40
45
46
47
48
49
[ 12 76 -61]0
[ 12 76 -61]1
[ 12 76 -61]2
[ 12 76 -61]8
[ 12 76 -61]97
[ 12 76 -61]3
47
[ 12 76 -61]5
[ 12 76 -61]6
[ 12 76 -61]7
425[ 12 76 -61]6427[ 12 76 -61]642947401402
413
47
[ 12 76 -61]5
[ 12 76 -61]6
[ 12 76 -61]7
4
475
[ 12 76 -61]6
427
[ 12 76 -61]6
429
47
401
402
Đầu ra:
Nhân hóa vô hướng: Nhân vô hướng có thể được biểu diễn bằng cách nhân một lượng vô hướng với tất cả các phần tử trong ma trận vectơ.
40
41
40
43
40
45
46
47
48
49
[ 12 76 -61]0
[ 12 76 -61]1
[ 12 76 -61]2
[ 12 76 -61]8
414
Output:
[ 12 76 -61]
Giải pháp đơn giản nhất
Sử dụng
415 hoặc
416. Xem tài liệu ở đây.
>>> a = np.array[[[ 5, 1 ,3],
[ 1, 1 ,1],
[ 1, 2 ,1]]]
>>> b = np.array[[1, 2, 3]]
>>> print a.dot[b]
array[[16, 6, 8]]
Điều này xảy ra bởi vì các mảng numpy không phải là ma trận và các hoạt động tiêu chuẩn
417 phần tử công việc khôn ngoan trên các mảng.
Lưu ý rằng trong khi bạn có thể sử dụng
418 [tính đến đầu năm 2021] trong đó
[ 12 76 -61]6 sẽ được xử lý như phép nhân ma trận tiêu chuẩn,
418 không được chấp nhận và có thể bị xóa trong các bản phát hành trong tương lai .. Xem ghi chú trong tài liệu của nó [được sao chép dưới đây]:
418 is deprecated and may be removed in future releases.. See the note in its documentation [reproduced below]:
Nó không còn được khuyến nghị sử dụng lớp này, ngay cả đối với đại số tuyến tính. Thay vào đó sử dụng các mảng thông thường. Lớp học có thể được loại bỏ trong tương lai.
Cảm ơn @hopeking.
Các giải pháp khác
Cũng biết có những lựa chọn khác:
Như đã lưu ý dưới đây, nếu sử dụng Python3.5+ và Numpy V1.10+, toán tử
4
21 hoạt động như bạn mong đợi:4
8Nếu bạn muốn Overkill, bạn có thể sử dụng
4
22. Tài liệu sẽ cung cấp cho bạn một hương vị cho cách nó hoạt động, nhưng thành thật mà nói, tôi không hoàn toàn hiểu cách sử dụng nó cho đến khi đọc câu trả lời này và chỉ chơi xung quanh với nó.4
2Tính đến giữa năm 2016 [Numpy 1.10.1], bạn có thể thử thử nghiệm
4
23, hoạt động như4
15 với hai trường hợp ngoại lệ chính: không nhân hóa vô hướng nhưng nó hoạt động với các ngăn xếp ma trận.4
04
25 có chức năng tương tự như4
15 cho phép nhân vectơ ma trận nhưng hoạt động khác nhau đối với ma trận ma trận và phép nhân tenxơ [xem Wikipedia liên quan đến sự khác biệt giữa sản phẩm bên trong và sản phẩm DOT nói chung hoặc xem câu trả lời này về việc triển khai Numpy].for matrix-vector multiplication but behaves differently for matrix-matrix and tensor multiplication [see Wikipedia regarding the differences between the inner product and dot product in general or see this SO answer regarding numpy's implementations].4
30Nếu bạn có nhiều mảng 2D đến
4
27 cùng nhau, bạn có thể xem xét hàm4
28, giúp đơn giản hóa cú pháp của nhiều4
29 lồng nhau. Lưu ý rằng điều này chỉ hoạt động với các mảng 2D [nghĩa là không cho phép nhân vector ma trận].2D arrays to4
27 together, you may consider the4
28 function, which simplifies the syntax of many nested4
29s. Note that this only works with 2D arrays [i.e. not for matrix-vector multiplication].[ 12 76 -61]
9
Tùy chọn hiếm hơn cho các trường hợp cạnh
Nếu bạn có tenxơ [mảng có kích thước lớn hơn hoặc bằng một], bạn có thể sử dụng
4
30 với đối số tùy chọn4
31:4
40Không sử dụng
4
4132 Nếu bạn có một ma trận các số phức, vì ma trận sẽ được làm phẳng thành một mảng 1D, thì nó sẽ cố gắng tìm sản phẩm chấm liên hợp phức tạp giữa ma trận và vector được làm phẳng của bạn [sẽ thất bại do kích thước Không phù hợp4
33 so với4
34]. if you have a matrix of complex numbers, as the matrix will be flattened to a 1D array, then it will try to find the complex conjugate dot product between your flattened matrix and vector [which will fail due to a size mismatch4
33 vs4
34].
Bạn có thể nhân một vectơ với vô hướng trong Python không?
Nhân hóa vô hướng: Nhân vô hướng có thể được biểu diễn bằng cách nhân một lượng vô hướng với tất cả các phần tử trong ma trận vectơ. Ở đây, sản phẩm DOT cũng có thể được nhận bằng toán tử '@'.Scalar multiplication can be represented by multiplying a scalar quantity by all the elements in the vector matrix. Here, dot product can also be received using the '@' operator.
Làm thế nào để bạn nhân vectơ với vô hướng?
Để nhân một vectơ với vô hướng, nhân mỗi thành phần với vô hướng.Nếu → u = ⟨u1, u2⟩ có cường độ | → u |và hướng d, sau đó n → u = n⟨u1, u2⟩ = ⟨nu1, nu2⟩ trong đó n là một số thực dương, độ lớn là | n → u |, và hướng của nó là d.multiply each component by the scalar. If →u=⟨u1,u2⟩ has a magnitude |→u| and direction d , then n→u=n⟨u1,u2⟩=⟨nu1,nu2⟩ where n is a positive real number, the magnitude is |n→u| , and its direction is d .
Làm thế nào để bạn nhân một vector trong Python?
Sản phẩm chấm của hai vectơ trong Python..
Syntax:.
Parameters:.
vector_a: [Array_like] Nếu A phức tạp liên hợp phức tạp của nó được sử dụng để tính toán sản phẩm DOT ..
vector_b: [Array_like] Nếu B phức tạp liên hợp phức tạp của nó được sử dụng để tính toán sản phẩm DOT ..