Warum ist numpy.array beim Bearbeiten der darin enthaltenen Daten so langsam?Python

Python-Programme
Guest
 Warum ist numpy.array beim Bearbeiten der darin enthaltenen Daten so langsam?

Post by Guest »

Ich habe einen Algorithmus geschrieben, der eine lange Liste verwendet. Da numpy.array bei der Verarbeitung langer Daten eine bessere Leistung erbringen sollte, habe ich eine andere Version mit numpy.array geschrieben.
Listenversion:

Code: Select all

import math
def PrimeTable(n:int) -> list[int]:
nb2m1 = n//2 - 1
l = [True]*nb2m1
for i in range(1,(math.isqrt(n)+1)//2):
if l[i-1]:
for j in range(i*3,nb2m1,i*2+1):
l[j] = False
return [2] + [i for i,v in zip(range(3,n,2), l) if v]
Array-Version:

Code: Select all

import math, numpy
def PrimeTable2(n:int) -> list[int]:
nb2m1 = n//2 - 1
l = numpy.full(nb2m1, True)
for i in range(1,(math.isqrt(n)+1)//2):
if l[i-1]:
for j in range(i*3,nb2m1,i*2+1):
l[j] = False
return [2] + [i for i,v in zip(range(3,n,2), l) if v]
Es stellt sich heraus, dass die numpy.array-Version 1x langsamer ist als die list-Version. Das Diagramm:
Image
wobei y0 PrimeTable und y1 PrimeTable2 ist
Warum? numpy.array ist so langsam, und wie kann ich es verbessern?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post