Почему numpy.array так медленно редактирует данные внутри?Python

Программы на Python
Ответить
Anonymous
 Почему numpy.array так медленно редактирует данные внутри?

Сообщение Anonymous »

Я написал алгоритм, использующий длинный список. Поскольку numpy.array должен лучше работать с длинными данными, я написал другую версию, используя numpy.array.
версия списка:

Код: Выделить всё

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]
Версия массива:

Код: Выделить всё

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]
Оказывается, версия numpy.array в 1 раз медленнее версии list. График:
Изображение
где y0 — это PrimeTable, а y1 — PrimeTable2
Почему numpy.array такой медленный, и как его улучшить?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ata-inside
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»