В Numpy я могу создать двумерный массив следующим образом:
arr = np.array([[0 for x in range(width)] for y in range(height)], dtype=np.uint8)
Но я также могу создать такой же массив, как этот, что намного быстрее, потому что он избегает Pythonпонимание списка:
arr = np.zeros((height, width), dtype=np.uint8)
Однако вместо этого я хочу, чтобы содержимое массива имело значения, которые зависят от значений x и y.Например, я мог бы сделать что-то вроде этого (где f(x,y)
- это некоторая функция, которую я определяю в другом месте):
arr = np.array([[f(x, y) for x in range(width)] for y in range(height)], dtype=np.uint8)
, но это очень медленно и имеет ту же проблему, о которой я упоминал ранее,Есть ли способ создать такой массив с производительностью, похожей на numpy.zeros, возможно, что-то вроде:
arr = np.values(f(x,y), (height, width), dtype=np.uint8)
?