#NumPy
#praca na macierzach (matrix), (listy wielowymiarowe), (listy w listach)
#funkcje matematyczne 
#SZYBKOSC - bo wykorzystuje listy z c++


import numpy as np

# #zwykla lista
# my_list = [1, "apple", 3,14, [5,6]]
# my_array = np.array([1, 2, 3])

# def print_array():
#     arr = np.array([[-1, 2, -3], [4,5,6], [7,8,9]])
#     print(f"tablica \n{arr}")
#     print(f"pierwszy element tablicy: \n {arr[0]}")
#     print(f"pierwszy zagnizdzony element tablicy: \n {arr[0][0]}")
#     print(f"typ obiektu tablicy: {type(arr)}")
#     print(f"ksztalt tablicy: {arr.shape}")
#     return arr

# arr = print_array()

# def shapeshifter(arr):
#     print("ksztalt tablicy 9x1")
#     print(arr.reshape(9,1))
#     print("ksztalt tablicy 1x9")
#     print(arr.reshape(1,9))
#     print("ksztalt tablicy 3x3")
#     print(arr.reshape(3,3))
#     print("ksztalt tablicy -1x9")
#     print(arr.reshape(-1,9))
#     newarr = np.array_split(arr.reshape(1,9), 3)
#     print(newarr)


# shapeshifter(arr)


# def data_format():
#     try:
#         arr = np.array([[1.1, 2.2, 3.3], ["kot", 12, "ola"], ["a", "h", "5"]])
#         print(arr)
#         print(type(arr))

#     except Exception as e:
#         print(e)

#     arr = np.array([[1.1,2.2,3.3] , [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]], dtype="U")
#     print(arr)
#     print(type(arr))


#     arr = np.array([[1.1,2.2,3.3] , [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]], dtype="i")
#     print(arr)
#     print(type(arr))    

#     arr = np.array([[1.1,2.2,3.3] , [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]], dtype="?")
#     print(arr)
#     print(type(arr)) 

# data_format()

def array_sorter():
    arr = np.array([[5,3,1], [6,3,9]])
    print(f"tablica przed sortowaniem \n{arr}")
    print(f"tablica po sortowaniu \n {np.sort(arr)}")

array_sorter()


from numpy import random

def generate_random_numbers():
    for i in range(10):
        print(random.randint(100))

    for i in range(10):
        print(random.rand())

generate_random_numbers()


def pick_random_numbers():
    print(random.rand(3, 5))
    print(random.choice([3, 5, 7, 9]))
    print(random.choice([3, 5, 7, 9], size=(3,5)))
    x = random.choice([3, 5, 7, 9], size=(100), p=[0.1, 0.3, 0.6, 0])
pick_random_numbers()


def shuffle_array():
    arr = np.array([1,2,3,4,5])
    print(f"przetasowana: {random.shuffle(arr)}")
    print(arr)


shuffle_array()