У меня есть функция, которая зависит от нескольких переменных, скажем y=f(x1,x2,x3,x4)
. Если каждая из переменных является простым числом, то результат должен быть простым числом. Если одна из переменных является массивом, мне нужен результат, чтобы быть также массивом. И так далее: если две переменные являются массивами, мне нужен результат, чтобы быть двумерным массивом. Etc.автоматическое вычисление массива в python (numpy)
Пример:
def f(x1,x2,x3,x4):
y=x1*x2/(x3+x4)
return y
x1=1.0
x2=2.0
x3=3.0
x4=4.0
f(x1,x2,x3,x4)
# should give 2.0/7.0 = 0.2857...
x3=array([1.0,2.0,3.0,4.0,5.0])
f(x1,x2,x3,x4)
# should give a one-dimensional array with shape (5,)
x4=array([10.0,20.0,30.0,40.0,50.0,60.0,70.0])
f(x1,x2,x3,x4)
# should give a two-dimensional array with shape (5,7)
Как это сделать? (Чтобы быть как можно более ясным для читателя, не использующего Python моей программы?)
Я понимаю. Пожалуйста, дайте мне пример всех переменных, являющихся массивами. Затем я должен добавить ... сколько newaxis для каждого? Спасибо – Amenhotep
Форма (5,7) или (7,5) в порядке, пока я понимаю правила (которых я еще не знаю: o). – Amenhotep
@Amenhotep - Посмотрите на [вещательную документацию] numpy (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html). Это объясняет правила. Итак, если 'x' - это 1-й массив с формой' (6,) ', то' x [:, np.newaxis] 'даст массив формы' (6, 1) 'и' x [np. newaxis,:] 'дает массив формы' (1, 6) '. Теперь, когда вы выполняете арифметическую операцию на '(5, 1)' и '(1, 7),« результат получается «(5, 7)» и т. Д. – mgilson