为什么numpy.insert将(N,1)数组转换为(N,)数组?

时间:2018-07-28 02:16:55

标签: python arrays numpy subtraction

我有一个大小为(N,1)的numpy数组。当我使用numpy.insert在数组中的某个位置插入一个值时,它将导致一个(N,)数组。从(N,)数组中减去(N,1)数组时,这稍后会引起问题。

示例:

#Random (4 x 1) array
a = np.random.rand(4,1)

#Insert a number. This results in a (4,) array
b = np.insert(a,0,10)

#Some other (5 x 1) array
c = np.random.rand(5,1)

#Because c is (5,1) and b is (5,), this subtraction is not element by
#element and results in a (5,5) array.
d = b - c

两个问题:

  1. 为什么“插入”减小数组的尺寸?

  2. 为什么从(5,1)数组中减去(5,)数组会导致(5,5)数组而不是逐元素减法?

1 个答案:

答案 0 :(得分:1)

来自numpy.insert docs

  

int,可选

     

插入的轴。如果 axis 为None,则首先将 arr 展平。

您未指定轴,因此insert将数组展平作为第一步。至于减法的工作原理,就是broadcasting