numpy中linspace用法


linspace的功能最初是从MATLAB中学来的,用此来创建等差数列。近期用Python的时候发现也有这个功能,提供相应功能的是numpy。关于MATLAB中的功能就不再进行赘述了,接下来把我可能用到的Python用法来简单做一个小节。

编写如下代码:

1 #!/usr/bin/python

2

3 import numpy as np

4

5 x1 = np.linspace(1,10)

6 x2 = np.linspace(1,10,10)

7 print(x1)

8 print(x2)

9 print("length of x1 is %d" % len(x1))

10 print("length of x2 is %d" % len(x2))

11

代码执行结果如下:

GreydeMac-mini:sport_365 greyzhang$ python linspace_demo.py

[ 1. 1.18367347 1.36734694 1.55102041 1.73469388

1.91836735 2.10204082 2.28571429 2.46938776 2.65306122

2.83673469 3.02040816 3.20408163 3.3877551 3.57142857

3.75510204 3.93877551 4.12244898 4.30612245 4.48979592

4.67346939 4.85714286 5.04081633 5.2244898 5.40816327

5.59183673 5.7755102 5.95918367 6.14285714 6.32653061

6.51020408 6.69387755 6.87755102 7.06122449 7.24489796

7.42857143 7.6122449 7.79591837 7.97959184 8.16326531

8.34693878 8.53061224 8.71428571 8.89795918 9.08163265

9.26530612 9.44897959 9.63265306 9.81632653 10. ]

[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]

length of x1 is 50

length of x2 is 10

GreydeMac-mini:sport_365 greyzhang$

从上面的:结果可以看出,在默认情况下,linspace函数可以生成元素为50的等间隔数列。而前两个参数分别是数列的开头与结尾。如果写入第三个参数,可以制定数列的元素个数。其实,这种方式相对来说也有一点欠缺规范,更好方式是指明第三个参数需要设定的属性。如此,代码需要修改如下:

1 #!/usr/bin/python

2

3 import numpy as np

4

5 x1 = np.linspace(1,10)

6 x2 = np.linspace(1,10,num = 10)

7 print(x1)

8 print(x2)

9 print("length of x1 is %d" % len(x1))

10 print("length of x2 is %d" % len(x2))

11

上面这段代码的运行结果与前面一致:

GreydeMac-mini:sport_365 greyzhang$ python linspace_demo.py

[ 1. 1.18367347 1.36734694 1.55102041 1.73469388

1.91836735 2.10204082 2.28571429 2.46938776 2.65306122

2.83673469 3.02040816 3.20408163 3.3877551 3.57142857

3.75510204 3.93877551 4.12244898 4.30612245 4.48979592

4.67346939 4.85714286 5.04081633 5.2244898 5.40816327

5.59183673 5.7755102 5.95918367 6.14285714 6.32653061

6.51020408 6.69387755 6.87755102 7.06122449 7.24489796

7.42857143 7.6122449 7.79591837 7.97959184 8.16326531

8.34693878 8.53061224 8.71428571 8.89795918 9.08163265

9.26530612 9.44897959 9.63265306 9.81632653 10. ]

[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]

length of x1 is 50

length of x2 is 10

GreydeMac-mini:sport_365 greyzhang$

其实,我个人使用的目前使用上面这些基本上就够了。不过,看了一下文档其实还有两个小功能值得注意一下。如果数列的元素个数指定,这两个参数属性也是可以选择性修改的。从文档中摘录如下:

endpoint : bool, optional

If True, stop is the last sample. Otherwise, it is not included. Default is True.

retstep : bool, optional

If True, return ( samples , step ), where step is the spacing between samples.

结束点如果现在为True,那么输入的第二个参数将会成为数列的最后一个元素,反之则不一定。而retstep会改变计算的输出,输出一个元组,而元组的两个元素分别是需要生成的数列和数列的步进差值。测试如下;

1 #!/usr/bin/python

2

3 import numpy as np

4

5 x1 = np.linspace(1,10)

6 x2 = np.linspace(1,10,num = 10,retstep = True)

7 print(x1)

8 print(x2)

9 print("length of x1 is %d" % len(x1))

10 print("length of x2 is %d" % len(x2))

11

运行结果如下:

GreydeMac-mini:sport_365 greyzhang$ python linspace_demo.py

[ 1. 1.18367347 1.36734694 1.55102041 1.73469388

1.91836735 2.10204082 2.28571429 2.46938776 2.65306122

2.83673469 3.02040816 3.20408163 3.3877551 3.57142857

3.75510204 3.93877551 4.12244898 4.30612245 4.48979592

4.67346939 4.85714286 5.04081633 5.2244898 5.40816327

5.59183673 5.7755102 5.95918367 6.14285714 6.32653061

6.51020408 6.69387755 6.87755102 7.06122449 7.24489796

7.42857143 7.6122449 7.79591837 7.97959184 8.16326531

8.34693878 8.53061224 8.71428571 8.89795918 9.08163265

9.26530612 9.44897959 9.63265306 9.81632653 10. ]

(array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]), 1.0)

length of x1 is 50

length of x2 is 2

GreydeMac-mini:sport_365 greyzhang$

从上面的结果中可以看到,设置了步进差值返回的x2,输出成了元组,而元组的第二个元素为步进差值1.0。

numpy中linspace用法介绍到这里,更多Python学习请参考编程字典Python教程 和问答部分,谢谢大家对编程字典的支持。


原文链接:https://blog.csdn.net/grey_csdn/article/details/54561796?ops_request_misc=&request_id=&biz_id=102&utm_term=python&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-54561796.nonecase&spm=1018.2226.3001.4187