Trong Numpy, các phép toán số học như cộng, trừ, nhân và chia () được thực hiện giữa hai (hay nhiều mảng) phải có cùng hình dạng hoặc phải tuân theo một số quy tắc cấp phát mảng. Trong Numpy cũng cấp sẵn một số hàm để thực hiện các phép toán.

1. Các phép toán cơ bản giữa hai mảng

Trong Numpy ta có thể dễ dàng thực hiện các phép toán như cộng, trừ, nhân, chia giữa hai mảng với nhau thông qua các hàm có sẵn trong Numpy như: np.add(), np.subtract(), np.multiply(), np.divide() 

Ví dụ dưới đây, thực hiện các phép toán cộng, trừ, nhân, chia giữa mảng a là mảng 2 chiều có kích thước 3 x 3 và mảng b là mảng 1 chiều có kích thước 1 x 3 thông qua các hàm np.add(), np.subtract(), np.multiply(), np.divide() như sau:

import numpy as np 
# Tao mang a la mang 2 chieu co kich thuoc 3 x 3
a = np.arange(9, dtype = np.float_).reshape(3,3) 

print("Mang a ban dau")
print(a)
print()  

# Tao mang b la mang 1 chieu co kich thuoc 1 x 3
b = np.array([10,10,10]) 
print("Mang b ban dau")
print(b)
print() 

print("Cong hai mang")
print(np.add(a,b)) 
print()  

print('Tru hai mang') 
print(np.subtract(a,b)) 
print()  

print('Nhan hai mang') 
print(np.multiply(a,b)) 
print()  

print('Chia hai mang') 
print(np.divide(a,b))

Kết quả:

Mang a ban dau
[[0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]

Mang b ban dau
[10 10 10]

Cong hai mang
[[10. 11. 12.]
 [13. 14. 15.]
 [16. 17. 18.]]

Tru hai mang
[[-10.  -9.  -8.]
 [ -7.  -6.  -5.]
 [ -4.  -3.  -2.]]

Nhan hai mang
[[ 0. 10. 20.]
 [30. 40. 50.]
 [60. 70. 80.]]

Chia hai mang
[[0.  0.1 0.2]
 [0.3 0.4 0.5]
 [0.6 0.7 0.8]]

Lưu ý: Mảng b có kích thước nhỏ hơn mảng a. Tuy nhiên, trong Numpy mảng có kích thước nhỏ hơn sẽ được giãn ra cùng với kích thước mảng lớn hơn để thực hiện phép toán!

2. Tính nghịch đảo các phần tử mảng

Để tính nghịch đảo của một số là phần tử có trong mảng Numpy, chúng ta có thể sử dụng hàm np.reciprocal() – hàm này sẽ tính nghịch đảo của một số ban đầu và trả về kết quả.
Ví dụ dưới đây, sử dụng hàm np.reciprocal() để tính nghịch đảo của các phần tử có trong mảng như sau:
import numpy as np 
# Tao mang a 
a = np.array([0.25, 0.5, 0.2, 0.125]) 

print("Mang a ban dau")
print(a)
print()  

# Tinh nghich dao cac phan tu trong mang a
a = np.reciprocal(a) 
print("Mang a gom cac phan tu nghich dao")
print(a)

Kết quả:

Mang a ban dau
[0.25  0.5   0.2   0.125]

Mang a gom cac phan tu nghich dao
[4. 2. 5. 8.]

3. Tính lũy thừa các phần tử mảng

Để tính lũy thừa a^n của các phần tử có trong một mảng Numpy, khi đó ta sẽ cần sử dụng hàm np.power() để thực hiện việc này.

Ví dụ dưới đây, sử dụng hàm np.power() để tính a ^ 2 (tính lũy thừa mũ 2) của các phần tử có trong một mảng a như sau:

import numpy as np 
# Tao mang a 
a = np.array([2, 4, 6, 8, 0]) 

print("Mang a ban dau")
print(a)
print()  

# Tinh a^2 cac phan tu co trong mang a
a = np.power(a,2) 
print("Mang a sau khi tinh luy thua a^2")
print(a)

Kết quả:

[2 4 6 8 0]

Mang a sau khi tinh luy thua a^2
[ 4 16 36 64  0]

3. Phép chia lấy dư giữa hai mảng

Để thực hiện phép tính chia lấy phần dư giữa hai mảng trong Numpy, khi đó ta cần sử dụng hàm np.mod() để thực hiện việc này.

Ví dụ dưới đây, thực hiện phép chia lấy phần dư giữa hai mảng a là mảng 2 chiều có kích thước 3 x 3, mảng là mảng 1 chiều có kích thước 1 x 3 thông qua hàm np.power() như sau:

import numpy as np 
# Tao mang a la mang 2 chieu co kich thuoc 3 x 3
a = np.array([
    [10, 12, 14],
    [16, 18, 20],
    [22, 24, 28]
]) 
print("Mang a ban dau")
print(a)
print()  

# Mang b la mang 1 chieu co kich thuoc 1 x 3
b = np.array([3, 5, 7])
print("Mang b ban dau")
print(b)
print() 

print("Mang a chia lay phan du cho mang b")
print(np.mod(a,b))

Kết quả:

Mang a ban dau
[[10 12 14]
 [16 18 20]
 [22 24 28]]

Mang b ban dau
[3 5 7]

Mang a chia lay phan du cho mang b
[[1 2 0]
 [1 3 6]
 [1 4 0]]