Creating 1-dimensional arrays

The easiest way to create an array is to pass a list to NumPy’s main utility to create arrays, np.array:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a = np.array([1, 2, 3])
a = np.array([1, 2, 3])
a = np.array([1, 2, 3])

The array function will accept any Python sequence. Think of lists, sets, tuples, or even a range. The function accepts several optional keyword arguments, and we will discuss two of them here: copy and dtype.

The copy argument

The copy argument states whether to make a copy of the input object. When copy is True, any changes in the resulting array will not change the input object. However, if it is False, changes in the array can change the input object.

When using lists to make arrays, NumPy will always copy the object regardless of the argument’s value; for example:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
lst = [1, 2, 3]
a = np.array(lst, copy=False)
print(a)
# array([1, 2, 3])
lst = [1, 2, 3] a = np.array(lst, copy=False) print(a) # array([1, 2, 3])
lst = [1, 2, 3]
a = np.array(lst, copy=False)
print(a)
# array([1, 2, 3])

If we change the array, the list will stay the same since NumPy copied the values, despite our copy=False argument:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a[0] = 0
print(lst)
# [1, 2, 3]
a[0] = 0 print(lst) # [1, 2, 3]
a[0] = 0
print(lst)
# [1, 2, 3]

Now we will create the same list but with another NumPy array as input:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a_in = np.array([1, 2, 3])
a = np.array(a_in, copy=False)
a
a_in = np.array([1, 2, 3]) a = np.array(a_in, copy=False) a
a_in = np.array([1, 2, 3])
a = np.array(a_in, copy=False)
a

Let’s see what happens if we change the resulting array:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a[0] = 0
print(a)
# array([0,2,3])
print(a_in)
# array([0,2,3])
a[0] = 0 print(a) # array([0,2,3]) print(a_in) # array([0,2,3])
a[0] = 0
print(a)
# array([0,2,3])
print(a_in)
# array([0,2,3])

Both arrays changed because we set the copy option to False.

You can test this for yourself using the following code crumb:

Change the copy argument and see what happens!

The dtype argument

Another commonly used argument is dtype, indicating the data type of the elements of this array explicitly. In the next lesson, you will learn about the available data types. One of them, np.int16, is the smallest available integer type, taking up way less space (just two bytes) than a regular Python integer.

Other 1D array-creation functions

Besides np.array, several other functions are mostly thin wrappers around np.array, but with some specific options. E.g.:

  • np.asarray(a) will return the input without copying if the input is a compatible NumPy array (copy=False)
  • np.copy(a): the input is always copied (copy=True)
  • np.fromiter(iter, dtype): creates a new array from an iterable object. This function requires you to set a dtype explicitly (a topic of the following lesson)

Head over to the official documentation to learn about all the options and other array creation functions.

Lesson Content