Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我希望所有的numpy数组都是二维的_Python_Arrays_Numpy - Fatal编程技术网

Python 我希望所有的numpy数组都是二维的

Python 我希望所有的numpy数组都是二维的,python,arrays,numpy,Python,Arrays,Numpy,我来自Matlab,虽然一切都进行了很好的移植(必须为此感谢社区,Matlab许可证的成本远远超过1000美元)。有一件事我一辈子都找不到 在Matlab中,所有阵列都是二维的(直到最近,它们还提供了其他选项)。这样,当我定义标量、数组、矩阵时,它们都被认为是二维的。这在执行矩阵乘法时非常有用 在Python中,当使用numpy时。不幸的是,我发现自己不得不经常使用“重塑”命令 除非另有说明,我是否可以全局设置所有阵列都具有二维尺寸? 编辑: 根据numpy文档,numpy.matrix可能在未

我来自Matlab,虽然一切都进行了很好的移植(必须为此感谢社区,Matlab许可证的成本远远超过1000美元)。有一件事我一辈子都找不到

在Matlab中,所有阵列都是二维的(直到最近,它们还提供了其他选项)。这样,当我定义标量、数组、矩阵时,它们都被认为是二维的。这在执行矩阵乘法时非常有用

在Python中,当使用numpy时。不幸的是,我发现自己不得不经常使用“重塑”命令

除非另有说明,我是否可以全局设置所有阵列都具有二维尺寸?

编辑: 根据numpy文档,numpy.matrix可能在未来被删除。本质上,我想做的是让任何numpy操作的所有输出都有函数np。至少对它们自动应用\u 2d

可以使用而不是np.array来定义二维矩阵。例如:

np.matrix('1 2; 3 4')
np.matrix([[1, 2], [3, 4]])
要将数组转换为矩阵,请使用:

但正如hpaulj在评论中提到的,请注意:

不再建议使用此类,即使对于线性 代数。而是使用正则数组。将来可能会删除该类

因此,习惯使用numpy数组是一个好主意。请看一下本教程

要将标量或一维数组转换为二维数组,函数


如上所述,np.matrix类的语义非常类似于matlab数组

然而,如果你的目标是将numpy作为一种市场技能来学习,我强烈建议你完全接受ndarray的概念;虽然将numpy称为matlab的一个端口有一定的历史真实性,但这有点侮辱,因为ndarray是numpy相对于matlab最引人注目的客观概念性改进之一,而不是它的价格


TLDR;如果你声称了解numpy,你将很难不被我抛出你的应用程序,但你的代码样本闻起来像是移植的matlab。

我还不明白你想做什么。你能解释一下你将如何使用
numpy
吗?几年前,他们编写了一个
np.matrix
子类,该子类强制其成员始终为2d。它的
*
是矩阵乘法。现在,大多数
numpy
开发人员都不赞成它,因为它似乎造成了更多的混乱,而不是帮助。仍然有一些任性的MATLAB程序员觉得很舒服:)。还有一个
scipy
sparse
矩阵模块是二维的,倍频程仍然是自由的:)更像是MATLAB。如果我试图帮助解决MATLAB/numpy翻译问题(或.mat文件传输问题),我会使用它。@Al-BaraaEl Hag我的意思是,
Python
中的
list
对象可以使用类似
numpy.array([[1,2],[3,4]])
转换成
numpy.ndarray
。因此,如果输入数组是2D矩阵,它将转换为2D
numpy.ndarray
。我认为设置默认维度很奇怪。避免for循环确实比在matlab中更重要,因为matlab for循环比python的速度快得多。一般来说,matlab不鼓励软件工程中的许多最佳实践。Python程序员对可读的变量名、docstring、范围的智能选择、关注点的分离、合理的模块结构非常坚决;在移植的matlab脚本中通常找不到这些。
a = np.array([[1, 2], [3, 4]])
m = np.asmatrix(a)
np.atleast_2d(3.0)
array([[ 3.]])

np.atleast_2d([1, 2, 3])
array([[1, 2, 3]])