【发布时间】:2022-01-19 12:54:29
【问题描述】:
我正在做很多向量代数,并希望使用 numpy 数组来消除对循环的任何需求并运行得更快。
我发现如果我有一个大小为 [N,P] 的矩阵 A,我经常需要使用 np.array([A[:,0]).T 来强制 A[:,0] 成为大小为 (N,1) 的列向量
有没有办法将二维数组的单行或列保持为二维数组,因为它使以下算术变得更加容易。例如,我经常需要将列向量(来自矩阵)与行向量(也从矩阵创建)相乘以创建一个新矩阵:eg
C = A[:,i] * B[j,:]
如果我不必继续使用那就太好了:
C = np.array([A[:,i]]).T * np.array([B[j,:]])
它确实混淆了代码 - 在 MATLAB 中,它只是 C = A[:,i] * B[j,:],它更易于阅读并与基础数学进行比较,特别是如果在同一行中有很多这样的术语,但不幸的是我的大部分同事没有 MATLAB 许可证。
请注意,这不是唯一的用例,因此此列 x 行操作的特定函数并没有太大帮助
【问题讨论】:
-
你考虑过使用 Octave 吗?
-
总的来说,我的组织大量使用 Python,所以如果我能坚持使用 Python 是最好的
-
此外,一个最小的可重现示例将包括 Python 将矩阵更改为一维数组的许多单独实例
-
你误用了
matrix这个词。二维array不是numpy中的matrix。它是一个array,仍然是array@选择切片时。您的问题似乎是:我可以将 MATLAB 语法与 numpy 一起使用吗? 答案是:不,您不能,您实际上必须学习numpy才能使用numpy。 -
是的,我在数学意义上使用矩阵,其中二维数组是矩阵。问题是,我可以在 numpy 中使用不那么笨重的 numpy 语法吗? MATLAB 是一个不那么笨拙的语法的好例子。