用序列创建的numpy数组
我正在从MATLAB过渡到scipy(+ numpy)+
matplotlib。在执行某些事情时,我总是遇到问题。我想在三个不同的部分中创建一个简单的向量数组。在MATLAB中,我将执行以下操作:
vector=[0.2,1:60,60.8];
这导致62个位置的一维数组。我正在尝试使用scipy来实现。我现在最接近的是:
a=[[0.2],linspace(1,60,60),[60.8]]
但是,这将创建一个列表,而不是数组,因此我无法将其重塑为向量数组。但是然后,当我这样做时,我得到一个错误
a=array([[0.2],linspace(1,60,60),[60.8]])
ValueError: setting an array element with a sequence.
我相信我的主要障碍是我不知道如何在MATLAB中转换此简单操作:
a=[1:2:20];
麻木。我不知道如何创建数组来访问数组中的位置。任何帮助将不胜感激,谢谢!
-
好吧NumPy使用 两个 函数而不是一个来实现MATLAB的数组创建函数 vector ,每个函数隐式地指定一个特定的轴,沿着该轴应该发生 级联
。这些功能是:-
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]
切片 符号按预期方式工作[ 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])
-