Задача 1
Внешнее и тензорное произведение
Вам даны две матрицы: A размером 10x3 и B размером 10x5:
import numpy as np

A = np.arange(10*3).reshape((10,3))
B = np.arange(10*5).reshape((10,5))

print(A)

# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]
#  [12 13 14]
#  [15 16 17]
#  [18 19 20]
#  [21 22 23]
#  [24 25 26]
#  [27 28 29]]

print(B)
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]
#  [20 21 22 23 24]
#  [25 26 27 28 29]
#  [30 31 32 33 34]
#  [35 36 37 38 39]
#  [40 41 42 43 44]
#  [45 46 47 48 49]]
Необходимо вычислить:
  • Внешнее произведение (outer product). Результатом должен быть новый массив размером 10x3x5, где каждая 3x5 матрица — это внешнее произведение соответствующих строк из A и B.
  • Тензорное произведение (tensor product) матриц A и B, которое создаст тензор размером 10x3x10x5, объединяющий все элементы обоих массивов по их осям.

Решение 🧠
import numpy as np

A = np.arange(10*3).reshape((10, 3))
B = np.arange(10*5).reshape((10, 5))

outer_product = np.array([np.outer(A[i], B[i]) for i in
range(A.shape[0])])
tensor_product = np.tensordot(A, B, axes=0)

print(f"Внешнее произведение: \n{outer_product}")
print(f"\nТензорное произведение: \n{tensor_product}")
Результат 💡
Внешнее произведение:
[[[   0    0    0    0    0]
[   0    1    2    3    4]
[   0    2    4    6    8]]

[[  15   18   21   24   27]

[  20   24   28   32   36]
[  25   30   35   40   45]]

[[  60   66   72   78   84]
[  70   77   84   91   98]
[  80   88   96  104  112]]

[[ 135  144  153  162  171]
[ 150  160  170  180  190]
[ 165  176  187  198  209]]

[[ 240  252  264  276  288]
[ 260  273  286  299  312]
[ 280  294  308  322  336]]

[[ 375  390  405  420  435]
[ 400  416  432  448  464]
[ 425  442  459  476  493]]

[[ 540  558  576  594  612]
[ 570  589  608  627  646]
[ 600  620  640  660  680]]

[[ 735  756  777  798  819]
[ 770  792  814  836  858]
[ 805  828  851  874  897]]

[[ 960  984 1008 1032 1056]
[1000 1025 1050 1075 1100]
[1040 1066 1092 1118 1144]]

[[1215 1242 1269 1296 1323]
[1260 1288 1316 1344 1372]
[1305 1334 1363 1392 1421]]]

Тензорное произведение:
[[[[   0    0    0    0    0]
[   0    0    0    0    0]
[   0    0    0    0    0]
...
[   0    0    0    0    0]
[   0    0    0    0    0]
[   0    0    0    0    0]]

[[   0    1    2    3    4]
[   5    6    7    8    9]
[  10   11   12   13   14]
 ...
[  35   36   37   38   39]
[  40   41   42   43   44]
[  45   46   47   48   49]]


[[   0    2    4    6    8]
[  10   12   14   16   18]
[  20   22   24   26   28]
...
[  70   72   74   76   78]
[  80   82   84   86   88]
[  90   92   94   96   98]]]

[[[   0    3    6    9   12]
[  15   18   21   24   27]
[  30   33   36   39   42]
...
[ 105  108  111  114  117]
[ 120  123  126  129  132]
[ 135  138  141  144  147]]

[[   0    4    8   12   16]
[  20   24   28   32   36]
[  40   44   48   52   56]
...
[ 140  144  148  152  156]
[ 160  164  168  172  176]
[ 180  184  188  192  196]]

[[   0    5   10   15   20]
[  25   30   35   40   45]
[  50   55   60   65   70]
...
[ 175  180  185  190  195]
[ 200  205  210  215  220]
[ 225  230  235  240  245]]]

[[[   0    6   12   18   24]
[  30   36   42   48   54]
[  60   66   72   78   84]
...
[ 210  216  222  228  234]
[ 240  246  252  258  264]
[ 270  276  282  288  294]]

[[   0    7   14   21   28]
[  35   42   49   56   63]
[  70   77   84   91   98]
...
[ 245  252  259  266  273]
[ 280  287  294  301  308]
[ 315  322  329  336  343]]

[[   0    8   16   24   32]
[  40   48   56   64   72]
[  80   88   96  104  112]
...
[ 280  288  296  304  312]
[ 320  328  336  344  352]
[ 360  368  376  384  392]]]

...

[[[   0   21   42   63   84]
[ 105  126  147  168  189]
[ 210  231  252  273  294]
...
[ 735  756  777  798  819]
[ 840  861  882  903  924]
[ 945  966  987 1008 1029]]

[[   0   22   44   66   88]
[ 110  132  154  176  198]
[ 220  242  264  286  308]
...
[ 770  792  814  836  858]
[ 880  902  924  946  968]
[ 990 1012 1034 1056 1078]]

[[   0   23   46   69   92]
[ 115  138  161  184  207]
[ 230  253  276  299  322]
...
[ 805  828  851  874  897]
[ 920  943  966  989 1012]
[1035 1058 1081 1104 1127]]]

[[[   0   24   48   72   96]
[ 120  144  168  192  216]
[ 240  264  288  312  336]
...
[ 840  864  888  912  936]
[ 960  984 1008 1032 1056]
[1080 1104 1128 1152 1176]]


[[   0   25   50   75  100]
[ 125  150  175  200  225]
[ 250  275  300  325  350]
...
[ 875  900  925  950  975]
[1000 1025 1050 1075 1100]
[1125 1150 1175 1200 1225]]


[[   0   26   52   78  104]
[ 130  156  182  208  234]
[ 260  286  312  338  364]
...
[ 910  936  962  988 1014]
[1040 1066 1092 1118 1144]
[1170 1196 1222 1248 1274]]]

[[[   0   27   54   81  108]
[ 135  162  189  216  243]
[ 270  297  324  351  378]
...
[ 945  972  999 1026 1053]
[1080 1107 1134 1161 1188]
[1215 1242 1269 1296 1323]]

[[   0   28   56   84  112]
[ 140  168  196  224  252]
[ 280  308  336  364  392]
...
[ 980 1008 1036 1064 1092]
[1120 1148 1176 1204 1232]
[1260 1288 1316 1344 1372]]

[[   0   29   58   87  116]
[ 145  174  203  232  261]
[ 290  319  348  377  406]
...
[1015 1044 1073 1102 1131]
[1160 1189 1218 1247 1276]
[1305 1334 1363 1392 1421]]]]