Maak een NumPy-functie om matrixtransformaties en manipulaties uit te voeren voor mijn dataset
description
Door deze prompt te gebruiken, kun je je gegevensverwerking stroomlijnen, de efficiëntie van je matrixbewerkingen verbeteren en ervoor zorgen dat je implementaties robuust en afgestemd zijn op de behoeften van je dataset.
prompt
try_prompt
Help me een NumPy-functie te maken die de volgende matrixtransformaties en manipulaties uitvoert: {{transformatie_beschrijving}} op mijn dataset. Bes ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een NumPy-functie die een 5x5 matrix neemt en deze met 90 graden draait. Ik zal ook kort de structuur van je dataset beschrijven en enkele overwegingen voor efficiëntie en randgevallen meenemen.
Structuur van je dataset:
- Een 5x5 matrix (2D array) van gehele getallen (integers).
- Dit betekent dat de matrix altijd vierkante is en een vaste afmeting heeft.
Implementatie:
```python
import numpy as np
def draai_matrix_90_graden(matrix):
"""
Draait een 5x5 matrix met 90 graden met de klok mee.
Input:
matrix: numpy.ndarray van shape (5, 5) met gehele getallen
Output:
een nieuwe numpy.ndarray van shape (5, 5), gedraaid
"""
# Controleer of de input matrix de juiste vorm heeft
if not isinstance(matrix, np.ndarray):
raise TypeError("Input moet een numpy array zijn.")
if matrix.shape != (5, 5):
raise ValueError("De matrix moet de vorm (5, 5) hebben.")
if not issubclass(matrix.dtype.type, np.integer):
raise TypeError("De matrix moet gehele getallen bevatten.")
# Draai de matrix met 90 graden met de klok mee
gedraaide_matrix = np.rot90(matrix, k=-1)
return gedraaide_matrix
```
Overwegingen:
- **Efficiëntie:** `np.rot90` is geoptimaliseerd voor numpy-arrays en is efficiënt voor deze operatie.
- **Randgevallen:**
- Controleer of de input een numpy array is.
- Controleer of de matrix de juiste afmeting heeft (5x5).
- Controleer of de data het juiste type bevat (gehele getallen).
- **Robuustheid:** Door deze controles voorkom je fouten bij onjuiste input.
Gebruikvoorbeeld:
```python
mijn_matrix = np.array([
[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]
], dtype=int)
resultaat = draai_matrix_90_graden(mijn_matrix)
print(resultaat)
```
Dit draait de matrix met 90 graden met de klok mee.
provider: deepseek
model: deepseek-chat
Hier is een efficiënte NumPy-implementatie voor het roteren van een 5x5 matrix met 90 graden, met aandacht voor randgevallen:
```python
import numpy as np
def roteer_matrix_90_graden(matrix):
"""
Roteert een 5x5 matrix met 90 graden tegen de klok in.
Args:
matrix: Een 5x5 NumPy array van gehele getallen
Returns:
Een geroteerde 5x5 NumPy array
Raises:
ValueError: Als de input geen 5x5 matrix is
TypeError: Als de matrix niet van integer type is
"""
# Randgeval: Controleer of input een NumPy array is
if not isinstance(matrix, np.ndarray):
raise TypeError("Input moet een NumPy array zijn")
# Randgeval: Controleer de vorm (shape)
if matrix.shape != (5, 5):
raise ValueError("Matrix moet exact 5x5 zijn")
# Randgeval: Controleer datatype
if not np.issubdtype(matrix.dtype, np.integer):
raise TypeError("Matrix moet gehele getallen bevatten")
# Efficiënte rotatie met np.rot90
# k=1 betekent 90 graden tegen de klok in
geroteerd = np.rot90(matrix, k=1)
return geroteerd
# Voorbeeld gebruik:
if __name__ == "__main__":
# Creëer een voorbeeld 5x5 dataset
dataset = np.array([
[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]
], dtype=int)
print("Originele matrix:")
print(dataset)
print("\nGeroteerde matrix (90° tegen klok in):")
resultaat = roteer_matrix_90_graden(dataset)
print(resultaat)
```
**Belangrijke overwegingen en kenmerken:**
1. **Efficiëntie**: Gebruikt `np.rot90()` die geoptimaliseerd is voor matrixrotaties
2. **Randgevallen**:
- Type checking voor NumPy array
- Shape validatie (exact 5x5)
- Datatype controle (integers)
- Duidelijke error messages
3. **Alternatieve implementatie voor volledige controle**:
```python
def roteer_matrix_90_handmatig(matrix):
"""Handmatige implementatie voor educatieve doeleinden"""
if matrix.shape != (5, 5):
raise ValueError("Matrix moet 5x5 zijn")
geroteerd = np.empty((5, 5), dtype=matrix.dtype)
for i in range(5):
for j in range(5):
geroteerd[i, j] = matrix[4-j, i] # 90° rotatie formule
return geroteerd
```
**Gebruiksaanwijzing**:
- De functie werkt alleen met exact 5x5 matrices
- Retourneert een nieuwe array, wijzigt de originele niet
- Rotatie is 90 graden tegen de klok in (standaard NumPy gedrag)
Deze implementatie is zowel robuust als efficiënt voor je specifieke use case.

