Я еще не рассмотрел ключевые понятия в numpy
.Параметры для функции numpy
Я хотел бы создать трехмерный массив и заполнить каждую ячейку результатом вызова функции - то есть функция будет вызываться много раз с разными индексами и возвращать разные значения.
Я мог бы создать его с нулями (или пустым), а затем перезаписать каждое значение с помощью цикла for, но кажется, что он чист, чтобы заполнить его непосредственно из функции.
fromfunction
звучит идеально. Reading the documentation звучит так, как функция вызывается один раз на ячейку.
Но когда я на самом деле попробовать ...
from numpy import *
def sum_of_indices(x, y, z):
# What type are X, Y and Z ? Expect int or duck-type equivalent.
# Getting 3 individual arrays
print "Value of X is:"
print x
print "Type of X is:", type(x)
return x + y + z
a = fromfunction(sum_of_indices, (2, 2, 2))
Я ожидаю, чтобы получить что-то вроде:
Value of X is:
0
Type of X is: int
Value of X is:
1
Type of X is: int
повторяется 4 раза.
я получаю:
Value of X is:
[[[ 0. 0.]
[ 0. 0.]]
[[ 1. 1.]
[ 1. 1.]]]
[[[ 0. 0.]
[ 1. 1.]]
[[ 0. 0.]
[ 1. 1.]]]
[[[ 0. 1.]
[ 0. 1.]]
[[ 0. 1.]
[ 0. 1.]]]
Type of X is: <type 'numpy.ndarray'>
функция вызывается только один раз, и, кажется, возвращает весь массив в качестве результата.
Каков правильный способ заполнения массива на основе нескольких вызовов функции индексов?
Что ваш ожидаемый результат? из функции вызывается один раз на ячейку - что вы подразумеваете под «множественными вызовами функции индексов»? – YXD
В вашем первом блоке кода 'a' является вашим заполненным массивом, где' a [i, j, k] = sum_of_indices (i, j, k) ' – YXD
Извините, я думал, что ожидаемый результат был ясен из комментариев. Я расширился. Да, я знаю, что «a» - это заполненный массив, но (я полагаю) только из-за добавления массива. Когда я заменяю sum_of_indices на «реальную» функцию (например,поиск базы данных), что будет невозможно. – Oddthinking