5

What's the difference between np.array(100) and np.array([100])? I understand that the latter is a 1D array containing a single value (100) but what is the former called?

3
  • former is 0-d array Commented Dec 14, 2021 at 6:12
  • The difference is the shape, () and (1,), and as a result ndim, 0 and 1. Commented Dec 14, 2021 at 6:20
  • 1
    Interesting. Its like an integer that follows the array protocol. So, a 0 dimensional point? Commented Dec 14, 2021 at 6:27

1 Answer 1

3

This is a 0d array. It can be used in many of the same ways as other arrays, subject of course to shape and dtype compatibilites.

In [545]: x=np.array(3)
In [546]: x.shape
Out[546]: ()          # empty tuple
In [547]: x.ndim
Out[547]: 0
In [548]: x.ravel()
Out[548]: array([3])         # as with other arrays, ravel makes a 1d array
In [549]: x.reshape(1,1,1)    # reshape to 3d
Out[549]: array([[[3]]])
In [550]: x.item()            # extracting that element
Out[550]: 3
In [551]: x[()]               # another extracting
Out[551]: 3             
In [552]: type(_)
Out[552]: numpy.int64
In [553]: type(x.item())
Out[553]: int

There's a subtle difference between item() and [()]. One returns python object, the other a "numpy scalar".

More on numpy scalars:

https://numpy.org/doc/stable/reference/arrays.scalars.html#methods

A common case where we encounter 0d array is when an object gets wrapped in an array, such as via np.save.

In [556]: d = np.array({'foo':'bar'})
In [557]: d
Out[557]: array({'foo': 'bar'}, dtype=object)
In [558]: d.shape
Out[558]: ()
In [559]: d.item()['foo']
Out[559]: 'bar'

The value of a 0d array can be changed

In [562]: x[...] = 4
In [563]: x
Out[563]: array(4)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.