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

Диагональ матрицы

11.02.2016, 00:22. Показов 10835. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Дана матрица X и два вектора одинаковой длины i и j. Написать функцию, которая возвращает вектор np.array, состоящий из последовательности элементов [X[i[0],j[0]],X[i[1],j[1]],...,X[i[N−1],j[N−1]]]. Заранее спасибо

Добавлено через 4 часа 42 минуты
И реализовать нужно без циклов
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2016, 00:22
Ответы с готовыми решениями:

Диагональ матрицы
есть матрица, к примеру: matrix1 = ,,] как в записать диагональ в список? diag = что то типа такого)

Numpy. Диагональ матрицы
Доброго времени суток, уважаемые форумчане! Начал изучать Numpy, и возникли трудности с получением диагонали матрицы. Есть двумерный...

Скопировать диагональ матрицы в одномерный массив
дана матрица 5х5(рандом). Диагональные элементы матрицы скопировать в другой одномерный массив.

12
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
11.02.2016, 08:56
Если генератор списка не считать циклом, то можно так:
Python
1
2
3
4
5
6
7
8
X = ((1, 2, 3, 4, 5), (6 ,7 ,8 ,9 ,'a'), ('b', 'c', 'd', 'e', 'f'), ('g', 10, 'as', 11, 'Cat'), ('a1', 'b1', 'c43', 'q1', '...'))
i = (0, 3, 1)
j = (0, 4, 1)
 
def GetVector(i, j, M):
    return [M[i[k]][j[k]] for k in range(len(i))]
 
print(GetVector(i, j, X))
0
11.02.2016, 09:23

Не по теме:

Цитата Сообщение от YakobsEA Посмотреть сообщение
def GetVector(i, j, M):
ой не хорошо, не соблюдать pep...

0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
11.02.2016, 10:14
alex925, не хорошо.
Это где-то седьмая программа моя на питоне - я тут новичок совсем. Так что поправляйте уж...

Добавлено через 10 минут
Поправлю сам себя...
Цитата из PEP:

Имена функций

Имена функций должны состоять из маленьких букв, а слова разделяться символами подчеркивания — это необходимо, чтобы увеличить читабельность.

Стиль mixedCase допускается в тех местах, где уже преобладает такой стиль, для сохранения обратной совместимости


Ну не так уж и сильно нарушил получается. Однако в соответствии с PEP функцию лучше назвать get_vector. Запомнил...
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.02.2016, 10:29
Цитата Сообщение от YakobsEA Посмотреть сообщение
GetVector
Так записываются только имена классов. Стиль называется camelcase и он применяется во всех языках только для названия классов.
Цитата Сообщение от YakobsEA Посмотреть сообщение
Стиль mixedCase
Этот стиль называется lower camel case и он действительно может применяться для названия функций (но как ты сам заметил, в python не рекомендуется так делать).
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
11.02.2016, 10:52
Цитата Сообщение от YakobsEA Посмотреть сообщение
return [M[i[k]][j[k]] for k in range(len(i))]
Увы, это цикл, просто записанный в одну строку.

На numpy такое задание делается до смешного просто и коротко. Я бы написал, но как-то неохота. Дважды уже человеку помог, а он молчит, ни "спасибо", ни даже "принял к сведению".
1
338 / 67 / 37
Регистрация: 22.12.2010
Сообщений: 138
11.02.2016, 15:50
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
 
def genmatrix(i, j, x):
    return x[i,j]
 
i = np.array([3, 3, 2, 0])
j = np.array([2, 3, 3, 1])
x = np.array([[1, 2, 2, 3] for k in range(len(i))])  
#полагаю, что генерировать исходную матрицу с помощью цикла всё-таки можно
 
print(i)
print(j)
print(x)
print (genmatrix(i,j,x))
0
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 13
11.02.2016, 16:34  [ТС]
Спасибо большое за ответы. Не понимаю, как это можно сделать вообще без циклов в NumPy. P. S. dondublon, Вы не обижайтесь. Просто совсем как-то запарился - задал вопросы на форуме и не посмотрел ответы, пытался сам что-нибудь сварганить. Спасибо Вам огромное за помощь!
0
338 / 67 / 37
Регистрация: 22.12.2010
Сообщений: 138
11.02.2016, 16:42
PIA111, без циклов (конкретно при получении ответа) - как я сделал выше.

http://docs.scipy.org/doc/nump... exing.html

Раздел "Index arrays" - Numpy arrays may be indexed with other arrays....
Там первый же пример.
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
12.02.2016, 00:19
dondublon, понятно дело, что по факту - цикл, но циклом не называется, а называется генератором. Преподаватель в учебном заведении вполне может именно так интерпретировать реальность. А про numpy и слова не было сказано. Если бы это было оговорено, то я бы пока со своими "знаниями" питона и не сунулся бы сюда.
В ближайшее время надо "потрогать" и numpay, а то как-то неполноценно себя чувствую...
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
12.02.2016, 07:06
Цитата Сообщение от YakobsEA Посмотреть сообщение
А про numpy и слова не было сказано.
Было, было
Цитата Сообщение от PIA111 Посмотреть сообщение
вектор np.array,
.
Цитата Сообщение от YakobsEA Посмотреть сообщение
dondublon, понятно дело, что по факту - цикл, но циклом не называется
Нет. Когда говорят "без циклов" в контексте работы с numpy, подразумевается - без питоновских циклов. Циклы там, конечно, есть, но они внутри numpy-евских объектов и исполнены на C++. Они быстрее, в том и смысл.

Цитата Сообщение от YakobsEA Посмотреть сообщение
а называется генератором
И тут не так. У вас не генератор, а готовый список. Генератор - это перебор того, что не хранится в памяти, у него каждый следующий элемент берётся "по ходу дела".
Генератор мог бы выглядеть так:
Python
1
2
3
4
5
6
7
8
9
10
import numpy as np
 
x = np.array([[1,2], [3,4]])
 
def diag(mat):
    for i in xrange(mat.shape[0]):
        yield mat[i, i]
 
for itm in diag(x):
    print itm
И всё равно тут питоновский цикл в наличии.
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
13.02.2016, 00:03
Ах ты ж... правда что, pn - это numpy...
Всё пошёл numpy качать и познавать...
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
16.02.2016, 04:45
Вот так вот...
Python
1
2
3
4
5
6
7
import numpy as np
 
X = np.array(((1, 2, 3, 4, 5), (6 ,7 ,8 ,9 ,10), (0, 0, 0, 0, 0), (-1, -10, -2, -11, -20), (100, 101, 102, 103, 104)))
i = np.array((0, 3, 1))
j = np.array((0, 4, 1))
 
print(X[i,j])
Действительно элементарно.

Добавлено через 1 минуту
Ну да и ответ уже дали вообще-то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2016, 04:45
Помогаю со студенческими работами здесь

Массив: Обнулить элементы матрицы, лежащие одновременно ниже главной диагонали, включая эту диагональ...
Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно ниже главной диагонали (включая эту диагональ) и выше...

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

Диагональ прямоугольника
Прямоугольник, нарисованный на клетчатой бумаге размером M*N, рассечен диагональю. Написать программу, которая определяет число клеточек,...

Побочная диагональ
Здравствуйте, нужна помощь с задачей. Я знаю как ее решить, используя двумерный массив, но в тестирующую систему нельзя сдавать решения,...

Каждая четвертая диагональ
В этой задаче нужно придумать генератор — однострочное выражение на языке Python, результатом вычисления которого будет двумерный массив...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru