时
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矩阵。
感谢您帮助我思考的帮助。
答案 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)的便捷方法是使用None
(np.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)