【问题标题】:Python: Is there any difference between x[i,:] and x[i][:] [duplicate]Python:x[i,:] 和 x[i][:] 之间有什么区别 [重复]
【发布时间】:2019-02-28 15:55:03
【问题描述】:

我尝试打印这两个:

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] 是等价的吗?

【问题讨论】:

  • 对于 numpy,是的,它们在输出上是等效的。请注意,第一种语法专门用于 numpy 索引; vanilla python 的操作方式不同。

标签: python arrays python-3.x numpy indexing


【解决方案1】:

就输出而言是等效的,但就引擎盖下发生的事情而言...否。

X_train[0,:3] 的情况下,对数组有一个__getitem__ 调用。在第二种情况下,tmp = X_train[0] 和一个 __getitem__ 调用返回一个临时数组(通常是原始数组的视图......您的里程可能会有所不同),然后是一个后续的tmp[:3],这是一个额外的__getitem__调用——这并没有太多开销,但如果你能做得更好,为什么还要做得更糟?

【讨论】:

  • 再问一件事,所以 X_train[0] 和 X_train[0,:] 在计算上是等效的,因为它们都必须执行一次 __getitem__ 调用?
  • @subtleseeker 一种语法是另一种更简单的版本,所以是的。
猜你喜欢
  • 2021-03-30
  • 2013-05-22
  • 1970-01-01
  • 2011-09-16
  • 2014-12-25
  • 2017-10-23
  • 1970-01-01
  • 2011-03-21
  • 2021-08-25
相关资源
最近更新 更多