Problem Formulation and Solution Overview
We could replace these negative numbers with zeroes (0) with one of the following options:
Preparation
- The NumPy library supports multi-dimensional arrays and matrices in addition to a collection of mathematical functions.
To install this library, navigate to an IDE terminal. At the command prompt ($
), execute the code below. For the terminal used in this example, the command prompt is a dollar sign ($
). Your terminal prompt may be different.
$ pip install numpy
Hit the <Enter>
key on the keyboard to start the installation process.
If the installation was successful, a message displays in the terminal indicating the same.
Feel free to view the PyCharm installation guide for the required library.
Add the following code to the top of each code snippet. This snippet will allow the code in this article to run error-free.
import numpy as np
Method 1: Use NumPy where()
This code replaces all negative Inventory values with zeroes (0) using NumPy’s where()
function. This function accepts the following parameters:
– A condition (inventory<0
).
– A value to replace elements matching said condition (0
).
– The array to apply the said condition (inventory
).
inventory = np.array([-5, -3, -11, -17, -8]) inventory = np.where((inventory < 0), 0, inventory) print(inventory)
What a concise way to process this change! The results save back to inventory
.
Output
[0 0 0 0 0] |
Method 2: Use Slicing
Another way to replace all negative Inventory values with zeroes (0) is to use the famous (or infamous) slicing method.
inventory = np.array([-5, -3, -11, -17, -8]) inventory[:] = 0 print(inventory)
This code uses the [:]
slicing notation to reference all elements of the inventory
array. The results save back to inventory
.
Output
[0 0 0 0 0] |
β Note: NumPy uses the broadcasting feature to dynamically fit the shape of the left side with the right side of the slice assignment operation.
Here’s a short video guide on broadcasting:
Method 3: Use NumPy place()
This code replaces all negative Inventory values with zeroes (0) using NumPy’s place()
function. This function accepts the following parameters:
– The array to apply the condition (inventory
).
– A condition (inventory<0
).
– A list containing a value(s) to replace matching elements ([0]
).
inventory = np.array([-5, -3, -11, -17, -8]) np.place(inventory, inventory<0, [0]) print(inventory)
This method is slightly different than using where()
. The results update inventory
in place.
Output
[0 0 0 0 0] |
Method 4: Use a For Loop
For this method, let’s assume the Inventory values are somewhat correct. You determined that the Inventory counts should be positive, not negative. One way to perform this task is it use a for
Loop.
for idx, item in enumerate(inventory): inventory[idx] = abs(inventory[idx]) print(inventory)
The above code identifies each element’s position (idx
) and its corresponding value (item
). Then, each element converts from a negative Inventory value to a positive value using abs(). Finally, the results save back to inventory
.
Output
[5 3 11 17 8] |
Summary
As you can see, there are a few ways to accomplish the same task. It is up to you to decide which method best meets your coding requirements.
Good Luck & Happy Coding!