<jupyter_start><jupyter_text>Bài tập lập trình Python - Numpy Chào mừng các bạn đến với bài tập lập trình về Python sử dụng Numpy.Trong bài tập lập trình này, các bạn sẽ ôn lại các chức năng cơ bản của Python đã học trên [AI VIỆT NAM](https://aivietnam.ai/).**Hướng dẫn:**- Trong bài tập này bạn sẽ sử dụng Python 3.- Cố gắng không sử dụng các vòng lặp (for, while). - Không chỉnh sửa các tên hàm. - Sau khi bạn viết Code của mình xong, hãy chạy dòng Code đó để xem kết quả bên dưới. Hãy bắt đầu nào!  Hướng dẫn làm bài Các bạn sẽ bắt đầu Code trong phần ` START CODE HERE ` và ` END CODE HERE `. Các bạn nhớ đừng sửa bất kỳ tên hàm nào ngoài phần Code này. Sau khi viết xong Code của bạn, bạn hãy ấn "SHIFT"+"ENTER" để thực hiện chạy lệnh của Cell đó. Trong phần Code: các bạn hãy cố gắng thực hiện ít dòng Code nhất theo chỉ định "(≈ X lines of code)". Mặc dù đây không phải là hạn chế về số dòng Code của bạn, nhưng hãy tối ưu sao cho ít nhất có thể.<jupyter_code># Import thư viện numpy

import numpy as np<jupyter_output><empty_output><jupyter_text>**Câu 1:** Thay thế tất cả các phần tử trong một mảng có giá trị lớn hơn 30 thành 30 và dưới 10 thành 10.Gợi ý: sử dụng `np.where` - https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html<jupyter_code># input: [28. 15. 22. 42.  1.  7. 34. 41.  8. 29.]
# output: [28. 15. 22. 30. 10. 10. 30. 30. 10. 29.]
ex1 = np.array([28, 15, 22, 42,  1,  7, 34, 41,  8, 29], dtype=np.float64)
# Trả về những phần tử < 30; những phần tử > 30 thay bằng 30

### START CODE HERE ### (≈ 1 line of code)
ex1 = None
### END CODE HERE ###


# Trả về những phần tử > 10; những phần tử < 10 thay bằng 10

### START CODE HERE ### (≈ 1 line of code)
ex1 = None
### END CODE HERE ###

print(ex1)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [28. 15. 22. 30. 10. 10. 30. 30. 10. 29.]       **Câu 2:** Lấy vị trí của 3 giá trị lớn nhất trong một mảng numpyGợi ý: sử dụng `np.argpartition` - https://docs.scipy.org/doc/numpy/reference/generated/numpy.argpartition.html<jupyter_code># input: [28. 15. 22. 42.  1.  7. 34. 41.  8. 29.]
# output: [6 7 3]
ex2 = np.array([28, 15, 22, 42,  1,  7, 34, 41,  8, 29], dtype=np.float64)
# Sử dụng `np.argpartition` 
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [6 3 7]       **Câu 3:** Chuyển một mảng nhiều chiều thành một mảng 1 chiều<jupyter_code># input: [array([0, 1, 2]) array([3, 4, 5, 6]) array([7, 8, 9])]
# output: [0 1 2 3 4 5 6 7 8 9]
ex3 = np.array([
    [0, 1, 2],
    [3, 4, 5],
    [7, 8, 9]
])
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [0 1 2 3 4 5 7 8 9]       **Câu 4:** Tạo **one-hot encoding** cho một mảng numpy. One-hot encoding nhằm chuyển đổi mỗi giá trị (số nguyên) n thành một vector v mà vị trí thứ n trong vector v mang giá trị 1 và  tất cả vị trí khác đều mang giá trị 0.<jupyter_code># input: [2 1 3 3 1 2]
# output: array([[0., 1., 0.],
#               [1., 0., 0.],
#               [0., 0., 1.],
#               [0., 0., 1.],
#               [1., 0., 0.],
#               [0., 1., 0.]])
ex4 = np.array([2, 1, 3, 3, 1, 2])

### START CODE HERE ### 

None # Các bạn hãy viết thuật toán của mình vào đây !

### END CODE HERE ###<jupyter_output><empty_output><jupyter_text>**Câu 5:** Sắp xếp các phần tử trong một mảng 1 chiều<jupyter_code># input: [3 6 4 8]
# output: [3 4 6 8]
ex5 = np.array([3, 6, 4, 8])
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [3 4 6 8]       **Câu 6:** Tìm giá trị lớn nhất trong mỗi hàng và mỗi cột của một mảng 2d<jupyter_code># input
# [[5 1 7]
#  [3 5 2]
#  [6 4 5]]
 
# output
# Max by column
# [6 5 7]
# Max by row
# [7 5 6]
ex6 = np.array([
    [5, 1, 7],
    [3, 5, 2],
    [6, 4, 5]
])
# Max by column
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [6, 5, 7]<jupyter_code># Max by row
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [7, 5, 6]       **Câu 7:** Tìm các phần tử trùng lặp (lần xuất hiện thứ 2 trở đi) trong mảng đã chovà đánh dấu chúng là True. Lần đầu tiên xuất hiện là False.<jupyter_code># [0 3 3 1 2 0 2 0]
# [False False  True False False  True  True  True]
ex7 = np.array([0, 3, 3, 1, 2, 0, 2, 0])

### START CODE HERE ### 

None # Các bạn hãy viết thuật toán của mình vào đây !

### END CODE HERE ###<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:               [False False  True False False  True  True  True]       **Câu 8:** Trừ theo dòng mảng 2 chiều arr2d bằng mảng 1 chiều arr1d<jupyter_code># arr2d
# [[3 3 3]
#  [4 4 4]
#  [5 5 5]]
# arr1d
# [1 1 1]
# output
# [[2 2 2]
#  [3 3 3]
#  [4 4 4]]
arr2d = np.array([
    [3, 3, 3],
    [4, 4, 4],
    [5, 5, 5]
])

arr1d = np.array([1, 1, 1])
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [[2 2 2]                [3 3 3]                [4 4 4]]       **Câu 9:** Bỏ tất cả các giá trị nan từ một mảng numpyReadmore: https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.isfinite.html<jupyter_code>#  input: [1.  2.  3. nan  5.  6.  7. nan]
# output: [1., 2., 3., 5., 6., 7.]
from numpy import nan
ex9 = np.array([1, 2, 3, nan, 5, 6, 7, nan], dtype=np.float64)
print(ex9)
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output><jupyter_text>**Đầu ra kỳ vọng**:              [1. 2. 3. 5. 6. 7.]       **Câu 10:** Lấy tất cả vị trí nơi các phần tử có giá trị khác nhau<jupyter_code># input
# arr1: [3 4 5 6 7 8]
# arr2: [3 3 6 6 7 7]
# output
# [1, 2, 5]
arr1 = np.array([3, 4, 5, 6, 7, 8])
arr2 = np.array([3, 3, 6, 6, 7, 7])
### START CODE HERE ### (≈ 1 line of code)
output = None
### END CODE HERE ###

print(output)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15635847270432313, 'fraction_numerical': 0.06626696118649417, 'mean_word_length': 2.834845735027223, 'pattern_counts': {'":': 0, '<': 51, '<?xml version=': 0, '>': 51, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 11, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '12', 'dir': 'jupyter-structured-clean-dedup', 'id': '606817', 'license': 'MIT', 'n_tokens_mistral': 3413, 'n_tokens_neox': 3144, 'n_words': 1007, 'path': 'Week 2/Assignment/Assignment-python-numpy-optional.ipynb', 'repo_name': 'thanhhff/AIVN-Course-AI-For-Everyone', 'size': '6338'}