Gar*_*ary 3 python matlab numpy
我在MATLAB中有以下代码行,我试图转换为Python numpy:
pred = traindata(:,2:257)*beta;
Run Code Online (Sandbox Code Playgroud)
在Python中,我有:
pred = traindata[ : , 1:257]*beta
Run Code Online (Sandbox Code Playgroud)
beta 是一个256 x 1阵列.
在MATLAB中,
size(pred) = 1389 x 1
Run Code Online (Sandbox Code Playgroud)
但在Python中,
pred.shape = (1389L, 256L)
Run Code Online (Sandbox Code Playgroud)
所以,我发现乘以beta数组会产生两个数组之间的差异.
我如何编写原始的Python行,因此大小pred为1389 x 1,就像在MATLAB中乘以我的beta数组一样?
我怀疑这beta实际上是一维numpy数组.在numpy,1D数组不是行或列向量,其中MATLAB明确区分.这些只是一维阵列与任何形状无关.如果必须,您需要手动向beta向量引入新的单例维度以便于乘法.除此之外,*运算符实际上执行逐元素乘法.要执行矩阵向量或矩阵的矩阵乘法,你必须使用numpy的dot函数来进行.
因此,你必须做这样的事情:
import numpy as np # Just in case
pred = np.dot(traindata[:, 1:257], beta[:,None])
Run Code Online (Sandbox Code Playgroud)
beta[:,None]将创建一个2D numpy数组,其中沿着行填充来自1D数组的元素,有效地形成列向量(即256 x 1).但是,如果您已经这样做了beta,那么您不需要引入新的单例维度.只需dot正常使用:
pred = np.dot(traindata[:, 1:257], beta)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |