Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions hw_numpy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Script *numpy.challenge* creates 3 numpy arrays in 3 different ways and implements several functions using **numpy** library:

1. matrix_multiplication() - takes 2 matrices, returns their matrix multiplication;
2. multiplication_check() - takes list of matrixes, returns True if they can be multiplied, otherwise returns False;
3. multiply_matrices() - takes list of matrixes, returns their matrix multiplication if they can be multiplied;
4. compute_2d_distance() - takes 2 1-dimensional arrays, returns distance between them;
5. compute_multidimensional_distance() - takes 2 1-dimensional arrays, returns distance between them;
6. compute_pair_distances() - takes matrix, returns matrix of pair distances for its rows.
46 changes: 46 additions & 0 deletions hw_numpy/numpy_challenge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import numpy as np

if __name__ == "__main__":
# Creating an array from a list(the first way):
array1 = np.array([6, 6, 6])
# Creating an array with arange (the second way):
array2 = np.arange(6)
# Creating an array of zeros (the third way):
array3 = np.zeros(6)


# This function computes matrix multiplication of 2 matrices
def matrix_multiplication(matrix1, matrix2):
return np.matmul(matrix1, matrix2)

# This function checks whether multiple matrices can be multiplied
def multiplication_check(*matrices):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не стоит считывать через *args, если обещали передавать один список.

  • оборачивает переданное в ещё один свой список, работать просто так не будет :)

for i in range(len(matrices) - 1):
if matrices[i].shape[1] != matrices[i+1].shape[0]:
return False
return True

# This function computes matrix multiplication of several matrices (if possible)
def multiply_matrices(*matrices):
if multiplication_check(*matrices):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

return np.linalg.multi_dot(matrices)
else:
return None

# This function computes distance between 2 point in 2-dimensional space
def compute_2d_distance(array1, array2):
return np.linalg.norm(array2 - array1)

# This function computes distance between 2 point in multidimensional space
def compute_multidimensional_distance(array1, array2):
return np.linalg.norm(array2 - array1)

# This function computes matrix of pair distances between rows of input matrix
def compute_pair_distances(matrix):
dim = matrix.shape[0] # amount of rows in input matrix
pair_distances = np.zeros((dim, dim))
for n_row in range(dim):
for n_col in range(dim):
if n_row != n_col: # filling matrix of pair distances
pair_distances[n_row, n_col] = np.linalg.norm(matrix[n_row] - matrix[n_col])
return pair_distances