0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 13

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

11.02.2016, 00:22. Показов 10854. Ответов 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 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru