Я попробовал распечатать оба из них:
print(X_train[0])
print(X_train[0,:])
#Output
[ 59. 62. 63. ... 123. 92. 72.]
[ 59. 62. 63. ... 123. 92. 72.]
Я думал, что они такие же, и поэтому я попробовал это:
print(X_train[0,:3])
print(X_train[0][:3])
#Output
[59. 62. 63.]
[59. 62. 63.]
Итак, оба этих X_train[0,:3]
и X_train[0][:3]
эквивалентны?
Эквивалент с точки зрения выхода да, но с точки зрения того, что происходит под капотом... нет.
В случае X_train[0,:3]
существует один вызов __getitem__
для массива. Во втором случае есть tmp = X_train[0]
с одним __getitem__
который возвращает временный массив (обычно это представление в оригинале... ваш пробег может меняться), за которым следует следующий tmp[:3]
который является дополнительным __getitem__
call - что не так много накладных расходов, но если вы можете сделать это лучше, почему это хуже?
__getitem__
только один раз?