#python #numpy
Вопрос:
Я создаю программу, которая создает матрицы на основе пользовательского ввода и позволяет им выбирать из меню несколько различных способов манипулирования и изменения матриц. У меня сложение и вычитание работают нормально, но когда я делаю умножение, это дает мне эту ошибку:
ValueError: shapes (3,1,3) and (3,1,3) not aligned: 3 (dim 2) != 1 (dim 1)
И когда я пытаюсь использовать np.transpose()
, это выдает мне эту ошибку:
numpy.core._exceptions.UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
«
def Matrices():
menu=("Pleae enter an option from the menu belownn1.Additionn2.Subtractionn3.Multiplicationn4.Calculate row and column averagesn5.transposen6.Exit")
user_input = 0
print("Create first matrix")
matrix1 = Create_Matrices()
print("Create second matrix")
matrix2 = Create_Matrices()
while user_input!=4:
user_input = int(input(menu "n"))
if user_input == 1:
C = matrix1 matrix2
print(C)
if user_input == 2:
C = matrix1-matrix2
print(C)
if user_input == 3:
C= matrix1.dot(matrix2)
print(C)
if user_input == 4:
C1_column = matrix1.mean(axis=0)
C2_column = matrix2.mean(axis=0)
print("The mean of matrix one's columns are ")
print(C1_column)
print("The mean of matrix two's columns are ")
print(C2_column)
C1_row = matrix1.mean(axis=1)
print("The average of matrix one's rows are ")
print(C1_row)
C2_row = matrix2.mean(axis=1)
print("The average of matrix two's rows are")
print(C2_row)
#print("The row averages for matrix 1 are: " C1_row "nThe row averages for matrix 2 are: " C2_row)
if user_input == 5:
matrix1 = np.transpose(matrix1)
matrix2 = np.transpose(matrix2)
print(matrix1 "n" matrix2)
if user_input ==6:
Exit()
«
Комментарии:
1. » «- это элементарное сложение.
*
является элементарным умножением, подчиняющимся тем же правилам измерения (broadcasting
).dot
является матричным умножением с разными правилами ( прочитайте его документы ).2. С чем ты пытаешься это сделать
5
?1
похоже на числовое сложение, но у этого есть строка. Для строк-это соединение строк. Вы хотя бы посмотрели на то, что
transpose
производит, и проверили, влияет ли это на это действие? При написании кода тестируйте части задач в интерактивном сеансе.
Ответ №1:
numpy.core._exceptions.UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
Эта ошибка означает, что ваш массив содержит поля юникода. Убедитесь, что ваш массив содержит только числа.