Инициализация пустой матрицы для чего-то отличного от нуля или единицы

Одним из решений было бы установить минимальную высоту для полей. К сожалению, кажется, что это не очень хорошо поддерживается IE (сюрприз).

151
задан Nadia Alramli 10 November 2009 в 00:17
поделиться

2 ответа

Вам редко нужны циклы для векторных операций в numpy. Вы можете создать неинициализированный массив и назначить сразу всем записям:

>>> a = numpy.empty((3,3,))
>>> a[:] = numpy.nan
>>> a
array([[ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN]])

Я рассчитал альтернативы a [:] = numpy.nan здесь и a.fill (numpy.nan) , как написано Блаенком:

$ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a.fill(np.nan)"
10000 loops, best of 3: 54.3 usec per loop
$ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a[:] = np.nan" 
10000 loops, best of 3: 88.8 usec per loop

Время показывает предпочтение ndarray.fill (..) в качестве более быстрой альтернативы. OTOH, мне нравится удобная реализация numpy, где вы можете назначать значения целым фрагментам одновременно, намерение кода очень ясное.

233
ответ дан 23 November 2019 в 20:57
поделиться

Вы знакомы с numpy.nan ?

Вы можете создать свой собственный метод, например:

def nans(shape, dtype=float):
    a = numpy.empty(shape, dtype)
    a.fill(numpy.nan)
    return a

Тогда

nans([3,4])

выведет

array([[ NaN,  NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN,  NaN]])

Я обнаружил этот код в ветке списка рассылки .

25
ответ дан 23 November 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: