Python数组行* 1column numpy for numpy.dot(matrix,matrix2)

时间:2018-06-13 23:08:26

标签: python python-3.x numpy

时  a = [1, 2, 3] x = numpy.array(a)  一个3列和1行的矩阵?我知道x = numpy.array([a])是一个1x4矩阵,但我需要的是opossite。 我需要乘以两个矩阵,但第一个是插入numpy.array(a)

的列表

还没有找到一个方法来做一个for和cicle通过a将它添加到x。 编辑:我正在进行线性回归,所以我需要一个nrows x 1 col,我的原始数据在列表中并使用numpy dot()函数进行乘法,我需要将我的列表转换为矩阵nrowsx 1列。 修复了解决方案是使用x = x.transpose()转置x = numpy.array([a])并给出一个nx1矩阵。

感谢您帮助我思考的帮助。

1 个答案:

答案 0 :(得分:2)

这是一维数组:

In [653]: x = np.array([1,2,3])
In [654]: x
Out[654]: array([1, 2, 3])
In [655]: x.shape
Out[655]: (3,)
In [656]: x.ndim
Out[656]: 1

另一个是二维:

In [657]: y = np.array([[1,2,3]])
In [658]: y
Out[658]: array([[1, 2, 3]])
In [659]: y.shape
Out[659]: (1, 3)
In [660]: y.ndim
Out[660]: 2

y

的转置
In [661]: z = y.T
In [662]: z
Out[662]: 
array([[1],
       [2],
       [3]])
In [663]: z.shape
Out[663]: (3, 1)

x的转置与x

相同

一些乘法选项:

In [664]: np.dot(x,y)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-664-6849a5f7ad6c> in <module>()
----> 1 np.dot(x,y)

ValueError: shapes (3,) and (1,3) not aligned: 3 (dim 0) != 1 (dim 0)

阅读np.dot了解有关形状交互的规则。关键短语是“x的最后一个维度对y的第二个到最后一个”。

In [665]: np.dot(y,x)
Out[665]: array([14])

这里(1,3)对与(3,)t-产生a(1,)。

元素乘法。这里适用广播规则

In [666]: x*y   
Out[666]: array([[1, 4, 9]])

(3,)with(1,3) - &gt; (1,3)(1,3) - > (1,3)

In [667]: x*z
Out[667]: 
array([[1, 2, 3],
       [2, 4, 6],
       [3, 6, 9]])

(3,)with(3,1) - &gt; (1,3)(3,1) - &gt; (3,3)

将(3,)数组更改为(3,1)的便捷方法是使用Nonenp.newaxis):

In [671]: x[:,None]
Out[671]: 
array([[1],
       [2],
       [3]])

In [672]: np.dot(x[:,None],y)
Out[672]: 
array([[1, 2, 3],
       [2, 4, 6],
       [3, 6, 9]])

(3,1)点与(1,3) - > (3,3)