我想了解更多用于处理数组的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]])
任何人都可以给我官方或具体的参考吗?我将非常感谢您!
答案 0 :(得分:1)
我猜您应该使用None
而不是np.newaxis
,它实际上是相同的,但是使用np.newaxis
时,该代码更具可读性,因为它在此尺寸处插入了一个新轴。
请参阅: https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html#numpy.newaxis