英文:
What is the 'a' in numpy.arange?
问题
numpy.arange
方法中的 'a' 代表什么?它与 Python 内置的 range
方法有何不同(在定义上,而非性能等方面)?
我尝试在网上寻找答案,但找到的都是类似 GeeksForGeeks 的教程,介绍如何使用 numpy.arange
。
英文:
What does the 'a' in numpy's numpy.arange
method stand for, and how does it differ from a simple range
produced by Python's builtin range
method (definitionally, not in terms of performance and whatnot)?
I tried looking online for an answer to this, but all I find is tutorials for how to use numpy.arange
by GeeksForGeeks and co.
答案1
得分: 2
You can inspect the return types and reason about what it could mean that way:
print(type(range(0,5)))
import numpy as np
print(type(np.arange(0,5)))
Which prints:
<class 'range'>
<class 'numpy.ndarray'>
Here's a related question: Link to Stack Overflow
- Some people do
from numpy import *
which would shadowrange
which causes problems. - Naming the function
arrayrange
was not chosen because it's too long to type.
英文:
You can inspect the return types and reason about what it could mean that way:
print(type(range(0,5)))
import numpy as np
print(type(np.arange(0,5)))
Which prints:
<class 'range'>
<class 'numpy.ndarray'>
Here's a related question: https://stackoverflow.com/questions/55102806/why-was-the-name-arange-chosen-for-the-numpy-function
- Some people do
from numpy import *
which would shadowrange
which causes problems. - Naming the function
arrayrange
was not chosen because it's too long to type.
答案2
得分: 1
根据之前的 Stack Overflow 帖子,我们了解到 a
在某种意义上代表着 array
(数组)。arange
是一个函数,返回一个类似于 list(range(...))
产生的列表的 NumPy 数组,在简单情况下至少是相似的。根据官方的 arange
文档:
对于整数参数,该函数大致相当于 Python 内置的 range,但返回的是一个 ndarray 而不是一个 range 实例。
在 Python 3 中,range
本身是“未评估的”,类似于生成器。这相当于 Python 2 中的 xrange
。
最好的“定义”是官方文档页面:
https://numpy.org/doc/stable/reference/generated/numpy.arange.html
也许你想知道何时使用其中的一个。简单的答案是 - 如果你正在进行 Python 级别的迭代,通常使用 range
更好。如果你需要一个数组,就使用 arange
(或者如文档建议的 np.linspace
)。
我经常使用 arange
来创建一个示例数组,比如:
np.arange(12).reshape(3,4)
# 输出:
# 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
。
英文:
From the previous SO we learn that the 'a' stands, in some sense, for 'array'. arange
is a function that returns a numpy array that is similar, at least in simple cases, to the list produced by list(range(...))
. From the official arange
docs:
> For integer arguments the function is roughly equivalent to the Python built-in range, but returns an ndarray rather than a range instance.
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])
In py3, range
by itself is "unevaluated", it's generator like. It's the equivalent of the py2 xrange
.
The best "definition" is the official documentation page:
https://numpy.org/doc/stable/reference/generated/numpy.arange.html
But maybe you are wondering when to use one or the other. The simple answer is - if you are doing python level iteration, range
is usually better. If you need an array, use arange
(or np.linspace
as suggested by the docs).
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])
I often use arange
to create a example array, as in:
In [108]: np.arange(12).reshape(3,4)
Out[108]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
While it is possible to make an array from a range
, e.g. np.array(range(5))
, that is relatively slow. np.fromiter(range(5),int)
is faster, but still not as good as the direct np.arange
.
答案3
得分: 0
'a' 在 numpy.arange 中代表 'array'。Numpy.arange 是一个生成在给定区间内连续数字数组的函数。它与 Python 内置的 range() 函数不同,因为它可以处理浮点数以及任意步长。另外,numpy.arange 的输出是一个元素数组,而不是一个范围对象。
英文:
The 'a' stands for 'array' in numpy.arange. Numpy.arange is a function that produces an array of sequential numbers within a given interval. It differs from Python's builtin range() function in that it can handle floating-point numbers as well as arbitrary step sizes. Also, the output of numpy.arange is an array of elements instead of a range object.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论