"克隆" 行或列向量
"克隆" 行或列向量
有时候将行向量或列向量克隆成矩阵是很有用的。克隆是指将行向量转换为矩阵,如:
[1, 2, 3]
转换为矩阵
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
或者将列向量转换为
[[1], [2], [3]]
转换为
[[1, 1, 1] [2, 2, 2] [3, 3, 3]]
在MATLAB或Octave中,这很容易实现:
x = [1, 2, 3] a = ones(3, 1) * x a = 1 2 3 1 2 3 1 2 3 b = (x') * ones(1, 3) b = 1 1 1 2 2 2 3 3 3
我想在numpy中重复这个操作,但是不成功:
In [14]: x = array([1, 2, 3]) In [14]: ones((3, 1)) * x Out[14]: array([[ 1., 2., 3.], [ 1., 2., 3.], [ 1., 2., 3.]]) # 到目前为止还好 In [16]: x.transpose() * ones((1, 3)) Out[16]: array([[ 1., 2., 3.]]) # 该死 # 我得到了 In [17]: (ones((3, 1)) * x).transpose() Out[17]: array([[ 1., 1., 1.], [ 2., 2., 2.], [ 3., 3., 3.]])
为什么第一种方法(In [16]
)不起作用?在Python中有更简洁的方法实现这个任务吗?