【发布时间】:2019-08-27 08:26:22
【问题描述】:
我想了解更多 numpy 来处理数组。我发现 a[:,None] 和 a[:,] 是不同的。我想深入了解何时何地使用它们。
我尝试解决以特殊方式从 2d 数组中减去 1d 的问题,就像 numpy-subtract-add-1d-array-from-2d-array 在我意识到 a[:,None] 和 a[:,] 之间的不同之处。
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> b = np.array([1,2,3])
>>> b
array([1, 2, 3])
>>> b[:,None]
array([[1],
[2],
[3]])
>>> b[:,]
array([1, 2, 3])
>>> b[None,:]
array([[1, 2, 3]])
>>> a-b[None,:]
array([[0, 0, 0],
[3, 3, 3],
[6, 6, 6]])
>>> b[,:] #false operation!!!
SyntaxError: invalid syntax
>>> a-b
array([[0, 0, 0],
[3, 3, 3],
[6, 6, 6]])
>>> a-b[:,np.newaxis]
array([[0, 1, 2],
[2, 3, 4],
[4, 5, 6]])
谁能给我官方或具体的参考资料?我会很感激你的!
【问题讨论】:
-
a[:]除了返回a的视图之外什么都不做;尺寸没有变化(检查它)。 a[:,]` 中的尾随,只是使索引参数成为一个元组(这是一个基本的 Python 操作),它在功能上是相同的,一个普通视图。a[,:]是语法错误。这是解释器提出的;这不是numpy的问题。 -
感谢您的推荐!我已经检查过了。你是对的,但它确实是 numpy 问题,因为 python 3.x 不支持元组作为列表索引。
-
Python 解释器会引发语法错误。
[1,2,3][:,]引发 TypeError,x[,:]或x[,3]引发语法错误,无论x是什么。我认为相关的语法规范是target_listin docs.python.org/3/reference/…。即使在索引之外(,2)和[,34]也是错误的。 -
啊!你一针见血!是的!
标签: arrays python-3.x numpy