gpt4 book ai didi

python - Matlab 到 Python numpy 索引和乘法问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:36 24 4
gpt4 key购买 nike

我在 MATLAB 中有以下代码行,我正在尝试将其转换为 Python numpy:

pred = traindata(:,2:257)*beta;

在 Python 中,我有:

pred = traindata[ : , 1:257]*beta

beta 是一个 256 x 1 数组。

在 MATLAB 中,

size(pred) = 1389 x 1

但是在 Python 中,

pred.shape = (1389L, 256L)

因此,我发现乘以 beta 数组会产生两个数组之间的差异。

如何编写原始的 Python 行,使 pred 的大小为 1389 x 1,就像在 MATLAB 中乘以我的 beta 数组时一样?

最佳答案

我怀疑 beta 实际上是一维 numpy 数组。在 numpy 中,一维数组不是行向量或列向量,而 MATLAB 明确区分了这一点。这些只是与任何形状无关的一维阵列。如果必须,您需要手动向 beta 向量引入一个新的单例维度,以方便乘法。除此之外,* 运算符实际上执行逐元素 乘法。要执行矩阵向量或矩阵矩阵乘法,您必须使用 numpydot这样做的功能。

因此,你必须这样做:

import numpy as np # Just in case

pred = np.dot(traindata[:, 1:257], beta[:,None])

beta[:,None] 将创建一个二维 numpy 数组,其中一维数组中的元素沿行填充,有效地生成一个列向量(即 256 x 1).但是,如果您已经在 beta 上完成了此操作,则无需引入新的单例维度。只需正常使用即可:

pred = np.dot(traindata[:, 1:257], beta)

关于python - Matlab 到 Python numpy 索引和乘法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com