numpy的numpy.arange方法中的'a'代表什么?它与Python内置的range方法生成的简单range有什么不同(定义上,不是性能之类的)?我试着在网上寻找这个问题的答案,但我找到的都是GeeksForGeeks and co提供的如何使用numpy.arange的教程。
numpy.arange
range
xxls0lw81#
您可以检查返回类型并推断它的含义:
print(type(range(0,5))) import numpy as np print(type(np.arange(0,5)))
其中打印:
<class 'range'> <class 'numpy.ndarray'>
这里有一个相关的问题:Why was the name "arange" chosen for the numpy function?1.有些人做from numpy import *,这会隐藏range,从而导致问题。1.未选择将函数命名为arrayrange,因为它太长,无法键入。
from numpy import *
arrayrange
3mpgtkmj2#
“a”代表numpy.arange中的“array”。numpy.arange是一个函数,它在给定的区间内生成一个序列数数组。它与Python内置的range()函数的不同之处在于,它可以处理浮点数以及任意步长。此外,numpy.arange的输出是一个元素数组,而不是一个range对象。
vfhzx4xs3#
从前面的SO中我们了解到,在某种意义上,'a'代表'array'。arange是一个函数,它返回一个numpy数组,至少在简单的情况下,类似于list(range(...))生成的列表。对于整型参数,该函数大致等同于Python内置的range,但是返回一个ndarray而不是range示例。
arange
list(range(...))
In [104]: list(range(-3,10,2)) Out[104]: [-3, -1, 1, 3, 5, 7, 9] In [105]: np.arange(-3,10,2) Out[105]: array([-3, -1, 1, 3, 5, 7, 9])
在py 3中,range本身是“未求值的”,它就像生成器一样,它相当于py 2x 1 m4n1x。最好的“定义”是官方文档页面:https://numpy.org/doc/stable/reference/generated/numpy.arange.html但是也许你想知道什么时候使用一个或者另一个,简单的答案是-如果你正在做python级别的迭代,range通常更好,如果你需要一个数组,使用arange(或者np.linspace,如文档所建议的)。
np.linspace
In [106]: [x**2 for x in range(5)] Out[106]: [0, 1, 4, 9, 16] In [107]: np.arange(5)**2 Out[107]: array([ 0, 1, 4, 9, 16])
我经常使用arange创建一个示例数组,如下所示:
In [108]: np.arange(12).reshape(3,4) Out[108]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
虽然可以从range(例如np.array(range(5)))制作阵列,但相对较慢。np.fromiter(range(5),int)较快,但仍不如直接np.arange好。
np.array(range(5))
np.fromiter(range(5),int)
np.arange
3条答案
按热度按时间xxls0lw81#
您可以检查返回类型并推断它的含义:
其中打印:
这里有一个相关的问题:Why was the name "arange" chosen for the numpy function?
1.有些人做
from numpy import *
,这会隐藏range
,从而导致问题。1.未选择将函数命名为
arrayrange
,因为它太长,无法键入。3mpgtkmj2#
“a”代表numpy.arange中的“array”。numpy.arange是一个函数,它在给定的区间内生成一个序列数数组。它与Python内置的range()函数的不同之处在于,它可以处理浮点数以及任意步长。此外,numpy.arange的输出是一个元素数组,而不是一个range对象。
vfhzx4xs3#
从前面的SO中我们了解到,在某种意义上,'a'代表'array'。
arange
是一个函数,它返回一个numpy数组,至少在简单的情况下,类似于list(range(...))
生成的列表。对于整型参数,该函数大致等同于Python内置的range,但是返回一个ndarray而不是range示例。
在py 3中,
range
本身是“未求值的”,它就像生成器一样,它相当于py 2x 1 m4n1x。最好的“定义”是官方文档页面:
https://numpy.org/doc/stable/reference/generated/numpy.arange.html
但是也许你想知道什么时候使用一个或者另一个,简单的答案是-如果你正在做python级别的迭代,
range
通常更好,如果你需要一个数组,使用arange
(或者np.linspace
,如文档所建议的)。我经常使用
arange
创建一个示例数组,如下所示:虽然可以从
range
(例如np.array(range(5))
)制作阵列,但相对较慢。np.fromiter(range(5),int)
较快,但仍不如直接np.arange
好。