我正在从 MATLAB 过渡到 scipy(+numpy)+matplotlib。在实现某些事情时,我一直遇到问题。 我想在三个不同的部分创建一个简单的向量数组。在 MATLAB 中,我会执行以下操作:
vector=[0.2,1:60,60.8];
这会产生一个包含 62 个位置的一维数组。我正在尝试使用 scipy 来实现这一点。我现在最接近的是:
a=[[0.2],linspace(1,60,60),[60.8]]
但是,这会创建一个列表,而不是数组,因此我无法将其 reshape 为向量数组。但是,当我这样做时,我得到一个错误
a=array([[0.2],linspace(1,60,60),[60.8]])
ValueError: setting an array element with a sequence.
我相信我的主要障碍是我不知道如何在 MATLAB 中翻译这个简单的操作:
a=[1:2:20];
到 numpy.我知道如何访问数组中的位置,尽管在创建序列时不知道。 任何帮助将不胜感激, 谢谢!
最佳答案
NumPy 实现了 MATLAB 的数组创建函数,vector,使用 两个 函数而不是一个 - 每个都隐含指定一个特定的轴,concatenation em> 应该发生。这些功能是:
r_(逐行连接)和
c_(按列)
因此,对于您的示例,NumPy 等价物是:
>>> import numpy as NP
>>> v = NP.r_[.2, 1:10, 60.8]
>>> print(v)
[ 0.2 1. 2. 3. 4. 5. 6. 7. 8. 9. 60.8]
按列对应的是:
>>> NP.c_[.2, 1:10, 60.8]
slice 符号按预期工作 [start:stop:step]:
>>> v = NP.r_[.2, 1:25:7, 60.8]
>>> v
array([ 0.2, 1. , 8. , 15. , 22. , 60.8])
虽然如果将 虚数 用作第三个参数,切片符号的行为类似于 linspace:
>>> v = NP.r_[.2, 1:25:7j, 60.8]
>>> v
array([ 0.2, 1. , 5. , 9. , 13. , 17. , 21. , 25. , 60.8])
否则,它的行为类似于 arange:
>>> v = NP.r_[.2, 1:25:7, 60.8]
>>> v
array([ 0.2, 1. , 8. , 15. , 22. , 60.8])
关于python - 使用序列创建的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10753528/