-
Notifications
You must be signed in to change notification settings - Fork 0
/
numpy.py
269 lines (188 loc) · 6.47 KB
/
numpy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# -*- coding: utf-8 -*-
"""numpy.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1DFKFWggXRc3u0GkmvMy0ssb7fTtxATi2
"""
import numpy as np
"""1. Creating Arrays"""
# Creating NumPy arrays
arr = np.array([1, 2, 3, 4, 5])
zeros = np.zeros((3, 3)) # Creating an array filled with zeros
ones = np.ones((2, 4)) # Creating an array filled with ones
# Printing the arrays
print("Array 'arr':", arr)
print("Array 'zeros':\n", zeros)
print("Array 'ones':\n", ones)
"""2. Array Indexing and Slicing"""
# Array Indexing and Slicing
print(arr[0]) # Accessing elements
print(arr[1:4]) # Slicing elements
"""3. Array Reshaping"""
# Array Reshaping
reshaped = arr.reshape(5, 1) # Reshaping arrays
print(reshaped)
"""4. Mathematical Operations"""
arr = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])
add = arr + arr2 # Element-wise addition
sub = arr - arr2 # Element-wise subtraction
mul = arr * arr2 # Element-wise multiplication
div = arr / arr2 # Element-wise division
mod = arr % arr2 # Element-wise modulo
# Printing the results
print("Addition:", add)
print("Subtraction:", sub)
print("Multiplication:", mul)
print("Division:", div)
print("Modulo:", mod)
"""5. Universal Functions (ufunc)"""
arr = np.array([1, 2, 3, 4, 5])
# Square root of each element
sqrt_arr = np.sqrt(arr)
# Exponential function (e^x) for each element
exp_arr = np.exp(arr)
# Sine of each element
sin_arr = np.sin(arr)
# Logarithm (base 10) for each element
log_arr = np.log10(arr)
# Printing the results
print("Square root:", sqrt_arr)
print("Exponential function:", exp_arr)
print("Sine:", sin_arr)
print("Logarithm (base 10):", log_arr)
"""6. Statistical Operations"""
arr = np.array([3, 5, 1, 7, 9, 2, 6, 8, 4, 10])
# Calculate mean
mean = np.mean(arr)
# Calculate median
median = np.median(arr)
# Calculate standard deviation
std_dev = np.std(arr)
# Calculate variance
variance = np.var(arr)
# Calculate minimum and maximum values
min_val = np.min(arr)
max_val = np.max(arr)
# Printing the statistical results
print("Mean:", mean)
print("Median:", median)
print("Standard Deviation:", std_dev)
print("Variance:", variance)
print("Minimum value:", min_val)
print("Maximum value:", max_val)
"""7. Array Concatenation and Splitting"""
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8, 9], [10, 11, 12]])
# Concatenating arrays vertically
concatenated_vertical = np.vstack((arr1, arr2))
# Concatenating arrays horizontally
concatenated_horizontal = np.hstack((arr1, arr2))
# Printing the concatenated arrays
print("Concatenated Vertically:")
print(concatenated_vertical)
print("\nConcatenated Horizontally:")
print(concatenated_horizontal)
# Splitting arrays vertically
split_vertical = np.vsplit(concatenated_vertical, 2)
# Splitting arrays horizontally
split_horizontal = np.hsplit(concatenated_horizontal, 2)
# Printing the split arrays
print("\nSplit Vertically:")
print(split_vertical)
print("\nSplit Horizontally:")
print(split_horizontal)
"""8. Array Stacking"""
# Create sample arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# Horizontal stacking
horizontal_stack = np.hstack((arr1, arr2))
# Vertical stacking
vertical_stack = np.vstack((arr1, arr2))
# Depth-wise stacking
depth_stack = np.dstack((arr1, arr2))
# Print the stacked arrays
print("Horizontal Stack:")
print(horizontal_stack)
print("\nVertical Stack:")
print(vertical_stack)
print("\nDepth-wise Stack:")
print(depth_stack)
"""9. Broadcasting"""
# Create a sample array
arr = np.array([[1, 2, 3], [4, 5, 6]])
# Add a scalar to the array using broadcasting
result = arr + 10
# Print the result
print("Array after adding 10:\n", result)
"""11. Random Number Generation"""
# Generating random integers
random_integers = np.random.randint(1, 100, size=(3, 3)) # Generates a 3x3 array of random integers from 1 to 100
print("Random Integers:\n", random_integers)
# Generating random floating-point numbers from a uniform distribution
random_floats = np.random.rand(2, 4) # Generates a 2x4 array of random floats in the half-open interval [0.0, 1.0)
print("Random Floats:\n", random_floats)
# Generating random numbers from a standard normal distribution (mean 0, variance 1)
random_normal = np.random.randn(2, 3) # Generates a 2x3 array from the standard normal distribution
print("Random Normal Distribution:\n", random_normal)
"""12. Array Manipulation"""
arr = np.arange(6) # Create an array from 0 to 5
reshaped_arr = arr.reshape(2, 3) # Reshape to a 2x3 array
print(reshaped_arr)
flattened_arr = reshaped_arr.flatten()
print(flattened_arr)
transposed_arr = reshaped_arr.T # Transpose the 2x3 array
print(transposed_arr)
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
concatenated_axis0 = np.concatenate((arr1, arr2), axis=0) # Concatenate along axis 0
concatenated_axis1 = np.concatenate((arr1, arr2), axis=1) # Concatenate along axis 1
print("Concatenated along axis 0:\n", concatenated_axis0)
print("Concatenated along axis 1:\n", concatenated_axis1)
arr_to_split = np.arange(9) # Create an array from 0 to 8
split_arr = np.split(arr_to_split, 3) # Split the array into 3 equal parts
print(split_arr)
"""13. Finding Unique Values"""
arr = np.array([1, 2, 3, 2, 4, 1, 5])
# Using np.unique to find the unique values
unique_values = np.unique(arr)
print(unique_values)
unique, counts = np.unique(arr, return_counts=True)
unique_with_counts = np.asarray((unique, counts)).T
print(unique_with_counts)
arr_2d = np.array([[1, 2], [3, 2], [4, 3], [1, 2]])
# Checking for unique rows
unique_rows = np.unique(arr_2d, axis=0)
print(unique_rows)
"""14. Linear Algebra Operations"""
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[2, 0], [1, 2]])
# Matrix multiplication using np.dot
result = np.dot(matrix_a, matrix_b)
print(result)
matrix = np.array([[1, 2], [3, 4]])
# Transposing a matrix
transposed_matrix = matrix.T
print(transposed_matrix)
matrix = np.array([[1, 2], [3, 4]])
# Calculating determinant
det = np.linalg.det(matrix)
print(det)
matrix = np.array([[1, 2], [3, 4]])
# Finding the inverse of a matrix
inverse_matrix = np.linalg.inv(matrix)
print(inverse_matrix)
matrix = np.array([[1, 2], [3, 4]])
# Singular Value Decomposition
u, s, vh = np.linalg.svd(matrix)
print("U:", u)
print("S:", s)
print("VH:", vh)
"""15. Save and Load NumPy Arrays"""
arr = np.array([[1, 2, 3], [4, 5, 6]])
# Save the array to a file
np.save('my_array.npy', arr)
# Load the array from the saved file
loaded_array = np.load('my_array.npy')
print(loaded_array)