Каковы эффективные способы присвоения значений двумерным массивам в виде функций показателей - PullRequest
1 голос
/ 05 июня 2019

Это может быть глупый вопрос, но я не смог найти похожий вопрос (пока).Например, я определяю как функцию с именем f (x, y)

def f(x, y):
    return x+y

Теперь я хочу вывести двумерный массив NumPy, значение элемента равно его индексам, суммированным, например, если яхочу массив 2x2:

arr = [[0, 1],
       [1, 2]]

Если я хочу массив 3x3, то вывод должен быть:

arr = [[0, 1, 2], 
       [1, 2, 3],
       [2, 3, 4]]

Неэффективно присваивать значения одно за другим, особенно еслиразмер массива велик, скажем, 10000 * 10000, что также является пустой тратой быстрой скорости numpy.Хотя это звучит довольно просто, но я не могу придумать простого и быстрого решения.Какой самый распространенный и эффективный способ сделать это?

Кстати, индексы суммирования всего лишь пример.Я надеюсь, что метод также может быть обобщен для произвольных функций, таких как, скажем,

def f(x,y):
    return np.cos(x)+np.sin(y)

, или даже для массивов более высокой размерности, таких как массивы 4x4.

1 Ответ

1 голос
/ 05 июня 2019

Вы можете использовать numpy.indices, который возвращает массив, представляющий индексы сетки; вам просто нужно сложить по оси 0:

>>> a = np.random.random((2,2))
>>> np.indices(a.shape).sum(axis=0) # array([[0, 1], [1, 2]])
>>> a = np.random.random((3,3))
>>> np.indices((3,3)).sum(axis=0) #array([[0, 1, 2], [1, 2, 3], [2, 3, 4]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...