What is the difference between an iterable and an array_like object in Python programs which use Numpy?
Both iterable and array_like are often seen in Python documentation and they share some similar properties.
I understand that in this context an array_like object should support Numpy type operations like broadcasting, however Numpy arrays area also iterable. Is it correct to say that array_like is an extension (or super-set?) of iterable?
Any sequence that can be interpreted as an ndarray. This includes nested lists, tuples, scalars and existing arrays. so even scalars can be taken into account, just like np. array(1024) .
NumPy arrays have a fixed size at creation, unlike Python lists (which can grow dynamically). Changing the size of an ndarray will create a new array and delete the original. The elements in a NumPy array are all required to be of the same data type, and thus will be the same size in memory.
They are not iterable, but they are accepted. You can also pass int s to numpy. array() , so they are array-like.
array(): The Numpy array object in Numpy is called ndarray.
The term "array-like" is indeed only used in NumPy and refers to anything that can be passed as first parameter to numpy.array() to create an array.
The term "iterable" is standard python terminology and refers to anything that can be iterated over (for example using for x in iterable).
Most array-like objects are iterable, with the exception of scalar types.
Many iterables are not array-like -- for example you can't construct a NumPy array from a generator expression using numpy.array(). (You would have to use numpy.fromiter() instead. Nonetheless, a generator expression isn't an "array-like" in the terminology of the NumPy documentation.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With