numpy:形状矢量(5,1)和(5,)有什么区别?

时间:2016-07-11 06:14:17

标签: python numpy

我发现为了使用点积,我经常需要将(5,)重塑成(5,1)。我不能只使用带有矢量形状(5,)的点积?

2 个答案:

答案 0 :(得分:4)

要使用点积,您需要矩阵(用2D数组表示)。具有维度(5,)的数组是5个项目的平面数组(1D数组),其中(5,1)是具有1列和5行的矩阵。

>>> import numpy as np
>>> np.zeros((5,))
array([ 0.,  0.,  0.,  0.,  0.])    # single flat array
>>> np.zeros((1,5))
array([[ 0.,  0.,  0.,  0.,  0.]])  # array with-in array
>>> np.zeros((5,1))
array([[ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.]])
>>>

答案 1 :(得分:3)

这是因为当您使用arr = np.ones((5))创建数组时,它会为您提供包含5个元素的一维数组,另一方面,当您使用arr = np.ones((5, 1))创建数组时,它会创建一个包含>>> import numpy as np >>> a = np.ones((5, 1)) >>> a array([[ 1.], [ 1.], [ 1.], [ 1.], [ 1.]]) >>> a = np.ones((5)) >>> a array([ 1., 1., 1., 1., 1.]) 的数组的数组。 5行1列。以下示例将使您更清楚:

public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
        Imgproc.bilateralFilter(inputFrame.gray(),co,9, 9, 7);

        Imgproc.medianBlur(inputFrame.gray(),gray, 7);
        Imgproc.adaptiveThreshold(gray,gray, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C,Imgproc.THRESH_BINARY,9,2);

        Core.bitwise_and(co,gray,mOutputFrame);//ADDS THE BOTH IMAGES 

    return mOutputFrame;
}