#!/usr/bin/python
# -*- coding: utf-8 -*-


# importamos la librería numpy, y le damos como nombre np dentro del programa
import numpy as np


lista = [25, 12, 15, 66, 12.5]
vector = np.array(lista)
print(vector)


print("- vector original")
print(vector)

print("- sumarle 1 a cada elemento del vector:")
print(vector + 1)
print("- multiplicar por 5 cada elemento del vector:")
print(vector * 5)

print("- suma de los elementos:")
print(np.sum(vector))

print("- promedio (media) de los elementos:")
print(np.mean(vector))  #

print("- el vector sumado a si mismo:")
print(vector + vector)
print("- suma de vectores vector1 y vector2 (mismo tamaño):")
vector2 = np.array([11, 55, 1.2, 7.4, -8])
print(vector + vector2)


print(vector[3])
print(vector[1:4])
print(vector[1:])
print(vector[:4])
print(vector[:])


print("- Vector de ceros:")
vector_ceros = np.zeros(5)
print(vector_ceros)

print("- Vector de unos:")
vector_unos = np.ones(5)
print(vector_unos)


# Combinando este tipo de creaciones con las operaciones aritméticas,
# podemos hacer varias inicializaciones muy rápidamente
# Por ejemplo, para crear un vector cuyos valores iniciales son todos 2.

print("- Vector con todos los elementos con valor 2:")
vector_dos = np.zeros(5) + 2
print(vector_dos)

print("- Vector con todos los elementos con valor 2 (otra forma):")
vector_dos_otro = np.ones((5)) * 2
print(vector_dos_otro)


# Find the index of the largest element of an np.array x:
print(vector.argmax())
print(np.argmax(vector))

c = vector.copy()
print(c)


print("unico ordenado")
lista = [25, 25, 12, 15, 66, 12, 12.5]
vector = np.array(lista)
print(vector)
uvector = np.unique(vector)
print(uvector)


import bisect

lista = [25, 25, 12, 15, 66, 12, 12.5]
print(lista)
bisect.insort(lista, 89)
print(lista)


print(np.isfinite(1))
print(np.isfinite(0))
print(np.isfinite(np.nan))
print(np.isfinite(np.inf))
print(np.isfinite(np.NINF))
x = np.array([-np.inf, 0.0, np.inf])
y = np.array([2, 2, 2])
print(np.isfinite(x, y))
