Широковещательная трансляция - использование значения переменной - PullRequest
0 голосов
/ 12 мая 2019

РЕДАКТИРОВАТЬ:

Поскольку мой вопрос был плохо сформулирован, я решил переписать его.

Позволяет ли numpy создавать массив с функцией, без использования Pythonстандартное понимание списка?

С пониманием списка я мог бы иметь:

array = np.array([f(i) for i in range(100)])

с заданной функцией fa.

Но если построенный массив действительно большой, использование списка Python будетбудет медленным и потребит много памяти.

Если такого способа не существует, я полагаю, что я мог бы сначала создать массив моего требуемого размера

array = np.arange(100)

И затем отобразитьфункция над ним.

array = f(array)

Судя по результатам из другого поста , кажется, что это было бы разумным решением.


Допустим, я хочуиспользуйте функцию add с простым значением int, это будет выглядеть следующим образом:

array = np.array([i for i in range(5)])
array + 5

Но что теперь, если я хочу, чтобы значение (здесь 5) было чем-то, что меняется в зависимости от индекса элемента массива.Например, операция:

array + [i for i in range(5)]

Какой объект можно использовать для определения специальных правил для значения переменной в векторизованной операции?

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

В вашем конкретном примере решение с использованием жюри будет использовать numpy.arange() как в:

In [4]: array + np.arange(5)
Out[4]: array([0, 2, 4, 6, 8])

В общем, вы можете найти какой-нибудь непонятный ufunc, который выполняет работу вашей пользовательской функции, или вы можете сделать это в функции python, которая затем возвращает ndarray, что-то вроде:

def custom_func():
    # code for your tasks

    return arr

Затем вы можете просто добавить возвращенный результат к уже определенному array как в:

array + cusom_func()
0 голосов
/ 12 мая 2019

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

Простое добавление двух массивов с помощью numpy в python?

Это предполагает, что ваша "переменная по индексу" - это просто другоемассив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...