Matriz en estructura de datos (Operaciones)

โšก Resumen inteligente

Un array en una estructura de datos almacena mรบltiples elementos del mismo tipo de datos en ubicaciones de memoria contiguas, cada una accesible mediante un รญndice. Este tutorial explica el concepto, por quรฉ son importantes los arrays y cรณmo crearlos y operar con ellos. Python, C++, y Java con ejemplos.

  • ๐Ÿ“ฆ Definiciรณn bรกsica: Un array almacena varios elementos del mismo tipo en memoria adyacente, a los que se accede mediante un รญndice.
  • โšก Acceso rรกpido: Cualquier elemento se recupera en tiempo constante utilizando su รญndice.
  • ๐Ÿ› ๏ธ Cinco Operafunciones: Insertar, eliminar, buscar, actualizar y recorrer forman parte del conjunto de herramientas de matrices.
  • ๐ŸŒ Interlingรผรญstico: Python utiliza el mรณdulo array; C++ y Java Declarar matrices de forma nativa con lรณgica manual.
  • ๐Ÿค– Relevancia de la IA: Los arreglos son la base de los tensores y matrices que impulsan los cรกlculos de aprendizaje automรกtico.

Matriz en estructura de datos (Operaciones)

ยฟQuรฉ es una matriz en la estructura de datos?

An matriz es una estructura de datos para almacenar mรกs de un elemento de datos de un tipo de datos similar. Los elementos de una matriz se asignan en ubicaciones de memoria adyacentes, y estas ubicaciones se denominan elementos del array. El nรบmero total de elementos en un array es su de largo.

Se accede a cada elemento por su posiciรณn, y esta referencia se llama รญndice or subรญndice.

Concepto de matriz

Diagrama conceptual de matrices

Diagrama conceptual de matrices

El diagrama anterior ilustra que:

  1. Una matriz es un contenedor de elementos.
  2. Los elementos tienen un valor y un tipo de datos especรญficos, como โ€œABCโ€, VERDADERO o FALSO.
  3. Cada elemento tiene su propio รญndice, que se utiliza para acceder a รฉl.

Nota:

  • Los elementos se almacenan en ubicaciones de memoria contiguas.
  • Un รญndice siempre es menor que el nรบmero total de elementos de la matriz.
  • Cualquier variable declarada como un array puede almacenar mรบltiples valores.
  • Casi todos los lenguajes de programaciรณn comparten el mismo concepto de arreglos, pero difieren en la forma en que los declaran e inicializan.
  • Tres elementos permanecen comunes en todas las inicializaciones: el nombre del array, los elementos y el tipo de datos de los elementos.

El siguiente diagrama muestra la sintaxis para declarar un matriz en Python y C++, lo que demuestra que el concepto se mantiene igual aunque la sintaxis varรญe ligeramente entre los idiomas.

Comprender la sintaxis de las matrices

Comprender la sintaxis de las matrices

  • Nombre de la matriz: necesario para facilitar la consulta de la colecciรณn de elementos.
  • Tipo de datos: Necesario para la verificaciรณn de tipos y la integridad de los datos.
  • Elementos: los valores de datos presentes en el array.

ยฟPor quรฉ necesitamos arreglos?

  • Los arrays son ideales para almacenar mรบltiples valores en una sola variable.
  • Procesan muchos valores de forma fรกcil y rรกpida.
  • Ordenar y buscar valores es mรกs fรกcil con matrices.

Creando una matriz en Python

In PythonLos arreglos se diferencian de las listas: una lista puede contener elementos de diferentes tipos de datos, mientras que un arreglo solo puede contener elementos del mismo tipo de datos. Python tiene un mรณdulo separado para manejar matrices, llamado array, que debes importar antes de usarlo.

Nota: El array debe contener nรบmeros reales, como enteros y nรบmeros de coma flotante; no se permiten cadenas de texto.

El siguiente cรณdigo crea una matriz de enteros en Python para almacenar saldos de cuentas:

import array
balance = array.array('i', [300, 200, 100])
print(balance)

Formas de declarar una matriz en Python

Puedes declarar una matriz en Python al inicializarlo utilizando la siguiente sintaxis:

arrayName = array.array(typecode, [array_items])

Sintaxis de matriz en Python

Sintaxis de matriz en Python

  1. Identificador: Especifique un nombre como lo hace habitualmente con las variables.
  2. Mรณdulos: Python Tiene un mรณdulo especial llamado โ€œarrayโ€ que debes importar primero.
  3. Mรฉtodo: El mรณdulo array tiene un mรฉtodo para inicializar el array, que toma dos argumentos: el cรณdigo de tipo y los elementos.
  4. Escriba el cรณdigo: especifique el tipo de datos utilizando los cรณdigos de tipo disponibles (consulte la tabla a continuaciรณn).
  5. Elementos: especifique los elementos de la matriz entre corchetes, por ejemplo [130, 450, 103].

La tabla que aparece a continuaciรณn enumera los cรณdigos de tipo disponibles para los tipos de datos admitidos.

Cรณdigo de tipo Tipo C Python Tipo Tamaรฑo mรญnimo (bytes)
'segundo' char firmado int 1
'B' char sin firmar int 1
'tu' Py_UNICODE Personaje Unicode 2
'h' corto firmado int 2
'H' unsigned short int 2
'yo' firmado int int 2
'YO' int sin firmar int 2
'l' firmado largo int 4
'L' largo sin firmar int 4
'F' flotar flotar 4
're' doble flotar 8

ยฟCรณmo acceder a un valor especรญfico de una matriz?

Puedes acceder a cualquier elemento de la matriz utilizando su รญndice.

Sintaxis:

arrayName[indexNum]

Ejemplo:

balance[1]

Acceder a un elemento de matriz

Acceder a un elemento de matriz

Aquรญ, accedimos al segundo valor del array usando el รญndice 1. El resultado es 200, que es el segundo valor del array balance.

import array
balance = array.array('i', [300, 200, 100])
print(balance[1])

Salida:

200

Formaciรณn Operaciones en Python

El Python El mรณdulo array proporciona funciones independientes para operaciones con arrays. Se trata de mรฉtodos destructivos, lo que significa que la modificaciรณn se guarda en la variable del array.

recuadro

Esta operaciรณn inserta uno o mรกs elementos en una matriz al principio, al final o en cualquier รญndice dado. Requiere dos argumentos: รญndice y valor.

arrayName.insert(index, value)

Ejemplo: Para insertar un nuevo valor justo despuรฉs del รญndice 1 (el valor 200), haga referencia al รญndice 2 en el mรฉtodo de inserciรณn.

import array
balance = array.array('i', [300, 200, 100])
balance.insert(2, 150)
print(balance)

Salida:

array('i', [300, 200, 150, 100])

Eliminar

Esta operaciรณn elimina un elemento de una matriz por su valor, aceptando un รบnico argumento. Tras su ejecuciรณn, los elementos se reordenan y se reasignan los รญndices.

arrayName.remove(value)

Ejemplo:

import array
balance = array.array('i', [300, 200, 150, 100])
balance.remove(150)
print(balance)

Salida:

array('i', [300, 200, 100])

Buscar

Esta operaciรณn busca un elemento por valor y devuelve su รญndice. Es un mรฉtodo no destructivo, por lo que no modifica los valores del array.

arrayName.index(value)

Ejemplo:

import array
balance = array.array('i', [300, 200, 150, 100])
print(balance.index(150))

Salida:

2

Actualizar

La actualizaciรณn reemplaza el valor existente en un รญndice dado utilizando un operador de asignaciรณn simple.Python Los arreglos no tienen una update() mรฉtodo.)

arrayName[index] = value

Ejemplo: Para reemplazar 150 (en el รญndice 2) por 145:

import array
balance = array.array('i', [300, 200, 150, 100])
balance[2] = 145
print(balance)

Salida:

array('i', [300, 200, 145, 100])

Recorrer

Puedes atravesar una Python matriz usando un bucle:

import array
balance = array.array('i', [300, 200, 100])
for x in balance:
    print(x)

Salida:

300
200
100

Creando una matriz en C++

C++ es mรกs flexible que Python al crear matrices. Puedes crear C++ arrays de tres maneras. El siguiente cรณdigo crea una matriz de enteros en C++ para almacenar saldos de cuentas:

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  for (int i = 0; i < 3; i++)
    {
      cout << "value of i: " << balance[i] << endl;
    }
  return 0;
}

Formas de declarar una matriz en C++

Puedes declarar un array de tres maneras, dependiendo de los requisitos de tu programa.

Declaraciรณn por tamaรฑo:

dataType arrayName[arraySize];   // e.g. int balance[3];

Declaraciรณn con elementos de matriz รบnicamente:

dataType arrayName[] = {array_items};   // e.g. int balance[] = { 300, 200, 100 };

Declaraciรณn por talla y artรญculos:

dataType arrayName[arraySize] = {array_items};   // e.g. int balance[3] = { 300, 200, 100 };

Cรณmo acceder a un valor especรญfico de una matriz en C++?

Accediendo a un elemento de matriz

Accediendo a un elemento de matriz

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  cout << balance[1];
  return 0;
}

Salida:

200

Formaciรณn Operaciones en C++

Quitar 'Me gusta' Pythonen C++ Debes programar tรบ mismo la lรณgica para las operaciones de inserciรณn, eliminaciรณn, bรบsqueda, actualizaciรณn y recorrido.

recuadro

La lรณgica de inserciรณn es la siguiente: recorrer los elementos del array, desplazarlos a un รญndice mayor y, a continuaciรณn, aรฑadir un nuevo elemento en dicho รญndice. El ejemplo que se muestra a continuaciรณn tiene cinco elementos e inserta el valor 150 justo despuรฉs del valor 200.

#include <iostream>
#include <stdio.h>

main() {
   int pos = 2;
   int size = 4;
   int balance[] = {300, 200, 100, 50, 0};

   printf("BEFORE INSERT:\n");
   for(int i = 0; i < 5; i++) {
      printf("%d\n", balance[i]);
   }

   /* SHIFT ITEMS TO A GREATER INDEX */
   for(int i = size; i >= pos; i--) {
       balance[i+1] = balance[i];
   }

   /* INSERT VALUE AT THE DESIRED INDEX */
   balance[pos] = 150;

   printf("AFTER INSERT:\n");
   for(int i = 0; i < 6; i++) {
      printf("%d\n", balance[i]);
   }
}

Formaciรณn Operaciones en Java

Vamos a crear un programa en Java que acepta el tamaรฑo y los valores de los elementos del array por parte del usuario.

import java.util.Scanner;

public class AddElements {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter the size of the array");
        int n = sc.nextInt();

        int arr[] = new int[n];

        System.out.println("Enter Elements in the array");
        for(int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        System.out.println("Elements in the array");
        for(int j = 0; j < n; j++) {
            System.out.print(arr[j] + " ");
        }
    }
}

Modificar un elemento en un Java Formaciรณn

Actualizar un elemento por su รญndice.

import java.util.Scanner;

public class ModifyElement {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        int length = arr.length;
        Scanner sc = new Scanner(System.in);

        System.out.println("Array Elements Before modify");
        for(int i = 0; i < length; i++) {
            System.out.print(arr[i] + " ");
        }

        System.out.println("\nEnter the position to change");
        int pos = sc.nextInt();
        System.out.println("Enter the value");
        int val = sc.nextInt();

        arr[pos] = val;

        System.out.println("Array Elements After modify");
        for(int j = 0; j < length; j++) {
            System.out.print(arr[j] + " ");
        }
    }
}

Elementos de acceso en un Java Formaciรณn

Imprime todos los elementos del array recorriรฉndolo.

public class AccessElements {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        int length = arr.length;

        System.out.println("Array Elements are:-");
        for(int i = 0; i < length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

Preguntas Frecuentes

Un array es una colecciรณn de elementos del mismo tipo de datos almacenados en ubicaciones de memoria contiguas. Se accede a cada elemento mediante un รญndice, lo que hace que los arrays sean eficientes para almacenar y recuperar mรบltiples valores relacionados.

A Python Una lista puede contener elementos de diferentes tipos de datos, mientras que un array (del mรณdulo array) contiene elementos de un solo tipo de dato. Los arrays son mรกs eficientes en cuanto al uso de memoria para grandes conjuntos de datos numรฉricos.

Las cinco operaciones bรกsicas son insertar (agregar un elemento), eliminar (quitar un elemento), buscar (encontrar un elemento por valor), actualizar (cambiar un valor en un รญndice) y recorrer (visitar todos los elementos).

El acceso a un elemento mediante su รญndice es O(1) โ€”tiempo constanteโ€” porque la direcciรณn de memoria se calcula directamente a partir de la direcciรณn base y el รญndice. La inserciรณn y la eliminaciรณn pueden ser O(n) debido al desplazamiento de memoria.

El almacenamiento contiguo permite que el programa calcule la direcciรณn de cualquier elemento instantรกneamente a partir de la direcciรณn base mรกs el รญndice multiplicado por el tamaรฑo del elemento. Esto es lo que proporciona a los arreglos su acceso aleatorio rรกpido y en tiempo constante.

Python Necesita el mรณdulo de matriz y ofrece mรฉtodos de operaciรณn integrados. C++ y Java Declara matrices de forma nativa, pero requiere que tรบ mismo programes la lรณgica de inserciรณn, eliminaciรณn y bรบsqueda. Java Los arrays tambiรฉn exponen una propiedad de longitud.

Los arreglos son la base de los vectores, matrices y tensores utilizados en la IA. Bibliotecas como NumPy y TensorFlow almacenan los datos de entrenamiento y los pesos del modelo como arreglos multidimensionales para realizar cรกlculos numรฉricos rรกpidos.

Sรญ. Los asistentes de codificaciรณn de IA detectan errores de รญndice fuera de rango y de รญndices fuera de lรญmites, sugieren correcciones y explican por quรฉ un รญndice excediรณ la longitud de la matriz, ayudanping Los principiantes resuelven rรกpidamente los errores comunes de los arrays.

Resumir este post con: