a [:,None]和a [:,]之间的区别

时间:2019-04-05 12:21:48

标签: arrays python-3.x numpy

我想了解更多用于处理数组的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]])

任何人都可以给我官方或具体的参考吗?我将非常感谢您!

1 个答案:

答案 0 :(得分:1)

我猜您应该使用None而不是np.newaxis,它实际上是相同的,但是使用np.newaxis时,该代码更具可读性,因为它在此尺寸处插入了一个新轴。

请参阅: https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html#numpy.newaxis