ubuntuusers.de

python: argparse, Matrizen übergeben

Status: Gelöst | Ubuntu-Version: Xubuntu 14.04 (Trusty Tahr)
Antworten |

zmsvsq

Anmeldungsdatum:
4. Februar 2013

Beiträge: Zähle...

Hallo,

zur Übung würde ich gerne ein python-Skript schreiben, daß zwei Matrizen miteiander multipliziert. Das ganze möchte ich in einer Konsole verwenden, weshalb ich gerne argparse verwenden möchte.

#!/usr/bin/python
import argparse    # Argumente
import numpy as np # Numerik-Bibliothek

parser = argparse.ArgumentParser()
parser.add_argument("matrix1",type=np.array)
args = parser.parse_args()

print(np.array([[1,2],[3,4]]))
print(args.matrix1)

Der Aufruf des obigen Skriptes liefert.

>>>./table.py [[1,2],[3,4]]
[[1 2
 [3 4]]
[[1,2],[3,4]]

Offensichtlich sind die als Argument übergebene Matrix und die innerhalb des Skriptes verwendete Matrix nicht gleichwertig. Was kann ich tun, um eine Matrix richtig als np.array an das Skript zu übergeben?

Gruß zmsvsq

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Die Shell übergibt dem Programm nur Strings! Die Erstellung einer Matrix in numpy zeigst Du hier aber über eine verschachtelte Liste. Du müsstest prüfen, ob oder wie numpy Matrizen aus Strings erstellen kann 😉

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: 696

Wohnort: Dortmund

#!/usr/bin/python
import argparse    # Argumente
import numpy as np # Numerik-Bibliothek
from ast import literal_eval

parser = argparse.ArgumentParser()
parser.add_argument("matrix1",type=lambda a: np.array(literal_eval(a)))
args = parser.parse_args()

print(np.array([[1,2],[3,4]]))
print(args.matrix1)
$ ./table.py [[1,2],[3,4]]
[[1 2]
 [3 4]]
[[1 2]
 [3 4]]

zmsvsq

(Themenstarter)

Anmeldungsdatum:
4. Februar 2013

Beiträge: 37

Hey, danke!

Genau so etwas habe ich gesucht ☺

Antworten |