Умножение массивов различной формы - PullRequest
0 голосов
/ 05 июня 2019

Мне необходимо умножить два массива разных размеров.

У меня есть два набора данных, которые можно представить как таблицы точек, описывающие алгебраическое уравнение.Другими словами, у меня есть два массива, соответствующих значениям x и y для одного набора данных, и два массива, соответствующих значениям x и y для другого набора данных.Два набора массивов имеют разные формы, поэтому я не могу просто умножить их вместе.

Подобно умножению двух алгебраических уравнений вместе, мне нужно умножить два значения y вместе, когда они имеют одинаковый x-значение.

Каждый из этих массивов импортируется из файлов .dat.

Вот четыре отдельных способа, которыми я пытался это сделать.


###interpolation is an array of size 1300 defined previously
###x_vals and y_vals have same dimension that is not 1300

for i in x_vals:
    for j in y_vals:
        k = j*interpolation
print(k)

################################ attempt2 ################

# x is an array of x-values associated with interpolation
for i in x:
    for j in x_vals:
        if i==j:
            k = interpolation*y_vals
print(k)

############################### attempt3 ################

for i in x_vals:
        if x==i:
            k = interpolation*y_vals
print(k)

############################ attempt4 ################

y_vals.resize(interpolation.shape)
k = interpolation*y_vals
print(k)
  • Первая попытка не выдает сообщений об ошибках, но результат неверен.

  • секунда выдала следующую ошибку: UnboundLocalError: local variable 'k' referenced before assignment

  • третий далследующее: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

  • четвертый выдал следующее сообщение об ошибке: ValueError: resize only works on single-segment arrays

1 Ответ

0 голосов
/ 05 июня 2019

Приведенный ниже код исправит вашу ошибку при попытке 2.

################################ attempt2 ################

###x is an array of x-values associated with interpolation
for i in x:
        for j in x_vals:
            if i==j:
                k = interpolation*y_vals
                print(k)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...