Seite 1 von 1

numarray fehlerhaft installoert?

Verfasst: Freitag 12. Januar 2007, 18:10
von hannes1234
Hallo,
ich habe ein Problem mit Python, im speziellen mit den Numerik-Paketen, die in Python eingebunden werden sollen.

Mit dem Fileinhalt, er ist den Übungsunterlagen entnommen,

*** File-Begin Testfile.py
from Numeric import *
from numarray import *
from numpy import *
from LinearAlgebra import *

n=4
A=zeros(n*n,float);A.shape=(n,n)
b=zeros(n,float);x=zeros(n,float)

for i in range(n):
x=i/2.0
for j in range(n):
A[i,j]=2.0+float(i+1)/float(j+i+1)

b=matrixmultiply(A,x)

y=solve_linear_equations(A,b)

if abs(sum(x-y)) < 1.0E-10:
print "correct solution"
*** File-Ende Testfile.py

erhalte ich:

*** Meldung-Beginn
Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.

****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************
IDLE 1.1.3 >>> ================================ RESTART ================================
>>>

Traceback (most recent call last):
File "E:\TU Wien\ILFB_Seminar\2006\Testfile.py", line 18, in -toplevel-
y=solve_linear_equations(A,b)
File "D:\Programme\Python24\Lib\site-packages\Numeric\LinearAlgebra.py", line 88, in solve_linear_equations
t =_commonType(a, b)
File "D:\Programme\Python24\Lib\site-packages\Numeric\LinearAlgebra.py", line 30, in _commonType
t = a.typecode()
AttributeError: 'numpy.ndarray' object has no attribute 'typecode'
>>>
*** Meldung-Ende

Ich versuchte verschiedenes:
Auf verschiedenen Rechnern mit AMD- oder Intelprozessoren
Unter Windows 2000 wie unter Windows XP
In den verschiedenen Pythonvesionen 2.3.5, 2.4.3 oder 2.5
Mit Administratorrechten im Betriebssystem oder ohne
Verschiedenen Module nicht importierend
Auf PC und Laptop

Allein ich bringe das File nicht zum Laufen.

Bei H.P. Langtangen fand ich dann eine Testroutine, mit der die Installation getestet werden kann:

*** Routine-Beginn
import numarray.testall as testall
testall.test()
*** Routine-Ende

Nach Durchführen dieses Tests erscheint in der Meldung zuletzt:
*** Meldung-Beginn

...
1 items had failures:
10 of 1210 in cache pass
***Test Failed*** 10 failures.
numarray.numtest: 2.21 ((10, 1210), (10, 1210))
numarray.ieeespecial: 0.08 (0, 86)
numarray.records: 0.14 (0, 48)
numarray.strings: 0.25 (0, 189)
numarray.memmap: 0.27 (0, 82)
numarray.objects: 0.43 (0, 105)
numarray.memorytest: 0.03 (0, 16)
numarray.examples.convolve: 0.14 ((0, 20), (0, 20), (0, 20), (0, 20))
numarray.convolve: 0.07 (0, 45)
numarray.fft: 0.37 (0, 75)
numarray.linear_algebra: 0.87 ((0, 46), (0, 51))
numarray.image: 0.05 (0, 37)
numarray.nd_image: 1.56 (0, 397)
numarray.random_array: 0.10 (0, 53)
numarray.ma: 0.82 (0, 674)
numarray.matrix: 0.09 (0, 11)
numarray.array_protocol: 0.11 (0, 35)
numarray.dtype: 0.07 (0, 15)
Total time: 9.56
*** Meldung-Ende

Wie schon oben in verschiedenen Kombinationen versucht bleibt dieser Fehler bestehen.
Irgend etwas mache ich falsch und komme nicht dahinter.
Kann mir jemand weiterhelfen?
Gruß
Hannes

Verfasst: Freitag 12. Januar 2007, 18:31
von sape
Hi und willkommen im Forum.

http://www.python-forum.de/faq.php#21

>> umarray fehlerhaft installoert?
Ist numarray fehlerhaft installiert?

Re: numarray fehlerhaft installoert?

Verfasst: Freitag 12. Januar 2007, 18:45
von CM
Hallo Hannes,

willkommen im Forum,
hannes1234 hat geschrieben: Mit dem Fileinhalt, er ist den Übungsunterlagen entnommen,

*** File-Begin Testfile.py
from Numeric import *
from numarray import *
from numpy import *
from LinearAlgebra import *
Welcher Scherzkeks hat denn diese Übungsunterlagen erstellt? Von drei Paketen mit sehr ähnlichen Inhalt mit * zu importieren ist nicht sonderlich clever. Denn numpy hat "typecodes" während numarray "typecode" hat. Der Unterschied ist historisch bedingt: Erst gab es Numeric, aka Numpy, dann wollten einige andere Funktionalität: numarray war geboren. Schließlich hat man lange versucht die beiden Projekte zusammenzuführen, was mit numpy (Groß- und Kleinschreibung beachten!) auch gelungen ist.

Was die Tests anbelangt: Was wurde da alles importiert? Hast Du sichergestellt, daß jeweils der richtige Installer gegen die richtige Pythonversion instaliert wurde? Und vor allem: Sind die bemängelten Routinen für Dich überhaupt wichtig?

Davon ab, bin ich mir auch nicht sicher, ob ich alles merkwürdige gesehen habe. Mein Vorredner hat schon recht: Könntest Du (oder jemand anderer) mal den Code in Tags setzen?

Gruß,
Christian

Verfasst: Freitag 12. Januar 2007, 18:48
von CM
PS Aufgrund der bescheuerten Importe wird das Testfile niemals richtig (im Sinne von einem Test- oder Vergleich für alle Pakete) funktionieren.

Gruß,
Christian

Verfasst: Dienstag 16. Januar 2007, 22:55
von hannes1234
Danke, Leute!
Nur Numeric imprtiert funktioniert auch das Testfile. Ist Numeric von der Entwicklung insgesamt gesehen, das älteste der drei?
Numpy scheint mir ds jüngste zu sein. Wie kann ich für Numeric geschriebenen Code auch unter numpy verwenden?
Gruß, Hannes

Verfasst: Mittwoch 17. Januar 2007, 13:39
von CM
Hallo Hannes,
hannes1234 hat geschrieben: Ist Numeric von der Entwicklung insgesamt gesehen, das älteste der drei?
Meinen Beitrag hast Du aber schon gelesen, oder?

Numeric und numpy sind sich äußerlich sehr ähnlich, man merkt nur wenige Unterschiede. numpys API gleicht am stärksten der von numarray. Wenn Du neuen Code schreibst, dann nur für numpy, denn für Numeric-Support wird es in absehbarer Zeit nicht mehr geben. Hier gibt es eine Anleitung für den Fall, daß Du größere Codemengen transformieren willst um "Handarbeit" wirst Du nicht herumkommen, aber das sollte schnell und leicht zu erledigen sein, denn die Fehlermeldungen sind informativ und meist beziehen sie sich nur auf andere Benennungen.

Ansonsten: Einfach mal mit Numeric-Code unter numpy probieren. Womöglich funktioniert es ja (mit kleinen Änderungen).

Gruß,
Christian

PS Dein Code ist immer noch nicht in Tags und immer noch reichlich seltsam, d. h. stylistisch nicht gut (siehe PEP 8 und nicht gerade auf der Höhe numpys (z. B. allclose())