С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/40: Рейтинг темы: голосов - 40, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 12

Ошибка при работе с матрицами

09.12.2017, 18:48. Показов 7896. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, нужно посчитать элементы вектора-столбца b через элементы матриц C и B, вот код:

Python
1
2
3
4
5
6
7
8
9
import numpy as np
 
C = np.matrix([[6.22, 1.42, -1.72, 1.91],[1.42, 5.33, 1.11, -1.82],
             [-1.72, 1.11, 5.24, 1.42],[1.91, -1.82, 1.42, 6.55]])
B = np.matrix([[7.53], [6.06], [8.05], [8.06]])
b = np.matrix([[0],[0],[0],[0]])
for i in range(0,4):
    b[i] = B[i]/C[i][i]
print(b)
Выдает ошибку в строке b[i] = B[i]/C[i][i]
ValueError: could not broadcast input array from shape (1,4) into shape (1,1)

С питоном работаю недавно и не совсем понимаю, в чем причина ошибки, почему он решил, что мне нужен shape(1,1)? И разве у b исходный shape не (4,1)?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2017, 18:48
Ответы с готовыми решениями:

Наследование класса при работе с матрицами
Доброго времени суток. Необходимо, допустим, вывести через наследуемый класс динамическую матрицу, которая задана в базовом классе, но что...

EAccessViolation при работе с матрицами и StringGrid
Доброго времени суток. Пытаюсь сделать лабораторную по программированию, но что-то идёт не так. Суть задачи: дана вещественная матрица...

Ошибочка вышла при работе с матрицами
Нужно создать вектор-столбец из частного максимальных элементов строк и столбцов соответственно. Выдает деление на ноль, хотя нулей нет....

3
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
09.12.2017, 20:01
Лучший ответ Сообщение было отмечено Doctor_Who как решение

Решение

Doctor_Who, сам ещё не освоился, но в данном случае сработают следующие правки:
Python
1
2
3
4
b = np.matrix([[0.],[0],[0],[0]]) # матрицы видимо типизированные
for i in range(0,4):
    b[i] = B[i]/C[i,i]; # использовать запятую вместо двух [i], 
#  ибо похоже результатом [i] является матрица с одной строкой и C[0][0][0][0][0]... = С[0]
1
110 / 36 / 5
Регистрация: 27.12.2012
Сообщений: 130
09.12.2017, 21:00
Цитата Сообщение от Doctor_Who Посмотреть сообщение
И разве у b исходный shape не (4,1)?
У b - (4,1), а вот у b[i] - (1,1).

Код alex white делит каждый элемент из B на каждый элемент из диагонали C.

C матрицами вы можите делать 2 вещи:
- обычное сложение, вычитание, умножение, степень, корень, логарифм и т.д. Это все опереции с элементами в матрицах.
- операции с матрицами, тогда надо использовать специальные команды. Например np.dot(С,B) для перемножения матриц.

Матрицы могут иметь только 2 dimensions. Поэтому чтобы найти элемент матрицы, всегда надо будет использовать [i,j]

Eсли больше 2 dimensions, то используйте np.array. Например у вас 4ех мерная таблица (2, 2, 4, 4):
Python
1
2
3
4
5
6
7
8
9
10
a = np.array([[6.22, 1.42, -1.72, 1.91], [1.42, 5.33, 1.11, -1.82],
               [-1.72, 1.11, 5.24, 1.42], [1.91, -1.82, 1.42, 6.55]]) # ваша матрица С
 
C = np.array([[a, 2*a],[3*a, 4*a]]) # Новая 4 мерная таблица
 
print('Table 4 dimensions: \n', C) # Показывает вам всю таблицу
 
print(C[1][0]) #  Показывает вам первую подтаблицу из 2ой dimension
print(C[1][1][3:]) # Показывает вам 3ию и ниже строки второй подтаблицы из 2ой dimension
print(C[1][0][2][3]) # Показывает конкретный элемент.

П.с. извините за корявый русский. на русском не работаю и не училась, так что не знаю как правильно размерность называется.

Добавлено через 10 минут
А можно и так вызывать:
Python
1
2
3
4
print(C[:,:,2,:])
print(C[1,0,:,:])
print(C[1,1,3:,:])
print(C[1,0,2,3])
Последние 3 строки делают тоже, что и строки 8-10
1
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 12
09.12.2017, 21:28  [ТС]
alex white, большое спасибо, это правда помогло, теперь смогу доделать лабу с:

vorobichek, благодарю за разъяснение нюансов работы с матрицами, далее мне это очень пригодится, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2017, 21:28
Помогаю со студенческими работами здесь

Unhandled exception при работе с матрицами
Делал лабораторную работу....и вот уже битых часа 3 сиже немогу понять в чем проблема и как ее испрвить вот условие задачи ...

Условие завершения цикла при работе с матрицами
Дана матрица A c 3 столбцами и 6 строками.Элементы каждой строки являются коэффициентами трехчлена вида A*x^2+A*x+A.Предпологается, что у...

Сложное условие завершения цикла при работе с матрицами
Помогите решить задачу:-

Сложное условие завершения цикла при работе с матрицами
Разработать программу на с++ для решения задачи, Которая ниже на фото

Сложное условие завершения цикла при работе с матрицами.
Методика выполнения работы. Составить программу, предусматривая завершение обработки матрицы при выполнении указанного в задании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru