问题
Numpy是一个极其常用的而且十分好用的第三方库,特别适用于处理各种多维数组,提供了非常多的方法。arange是生成数组的一种方法,与Python自带的range功能十分相似,那么二者的区别是什么呢?
方法
import numpy as np
a = range(10)
print(a) # range(0, 10)
print(list(a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = range(1, 10)
print(list(b)) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
c = range(1, 10, 2)
print(list(c)) # [1, 3, 5, 7, 9]
# range的步长不支持小数
# range(1, 10, 0.1)
d = np.arange(10)
print(type(a), type(d), d) # <class 'range'> <class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8 9]
e = np.arange(1, 10, 1.5)
print(e) # [1. 2.5 4. 5.5 7. 8.5]
以上可以看到,主要区别在于:
- 返回的类型不一样,range()返回的是class ‘range’,而np.arange()返回的是class ‘numpy.ndarray’;
- range()的步长只能是整数,而np.arange()则不受此限制;
- 由于np.arange()返回的是ndarray,其提供了更加丰富的方法;