Как перемножить элементы строки в матрице, которые принадлежать диапазону [a,b]?

paveldunaev

Новичок
Пользователь
Мар 9, 2023
5
0
1
Например у нас есть матрица :
1.192 1.192 2.255 0.011 2.167
1.192 1.192 2.255 0.011 2.167
2.255 2.255 1.734 0.109 5.810
0.011 0.011 0.109 0.420 1.081
2.167 2.167 5.810 1.081 0.191

Нам нужно получить вектор [x1, x2, x3, x4, x5], где
x1=умноженные элементы первой строки, которые принадлежат диапазону [2;10];
x2=умноженные элементы второй строки, которые принадлежат диапазону [2;10];
x3=аналогично;

Если посчитать то в итоге мы должны получить vector=[4.887, 4.887, 29.544, 0, 27.283].

вот код
def vectorMatrix ():
vector=[]
for i in range (N):
for j in range (N):
if 2<=a[j]<=10:
vector *= a[j]
print (a[j], end =' ')
print()
vectorMatrix ()
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    3 КБ · Просмотры: 4
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 586
459
83
покажите свои попытки

Желательно решить задачу через процедуры
это вы нам задание даете?
 

paveldunaev

Новичок
Пользователь
Мар 9, 2023
5
0
1
покажите свои попытки


это вы нам задание даете?
def vectorMatrix ():
vector=[]
for i in range (N):
for j in range (N):
if 2<=a[j]<=10:
vector *= a[j]
print (a[j], end =' ')
print()
vectorMatrix ()
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 586
459
83
def vectorMatrix ():
vector=[]
for i in range (N):
for j in range (N):
if 2<=a[j]<=10:
vector *= a[j]
print (a[j], end =' ')
print()
vectorMatrix ()
и что не работает?
 

paveldunaev

Новичок
Пользователь
Мар 9, 2023
5
0
1
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 586
459
83
вы не уточнили формат входных данных...
можно так
Python:
m = [
    [1.192, 1.192, 2.255, 0.011, 2.167],
    [1.192, 1.192, 2.255, 0.011, 2.167],
    [2.255, 2.255, 1.734, 0.109, 5.810],
    [0.011, 0.011, 0.109, 0.420, 1.081],
    [2.167, 2.167, 5.810, 1.081, 0.191]
]

def vectorMatrix(matrix):
    vector = []
    for i in matrix:
        tmp = 1
        for j in i:
            if 2 <= j <= 10:
                tmp *= j
        if tmp == 1:
            vector.append(0)
        else:
            vector.append(round(tmp, 3))

    print(vector)

vectorMatrix(m)
 

paveldunaev

Новичок
Пользователь
Мар 9, 2023
5
0
1
вы не уточнили формат входных данных...
можно так
Python:
m = [
    [1.192, 1.192, 2.255, 0.011, 2.167],
    [1.192, 1.192, 2.255, 0.011, 2.167],
    [2.255, 2.255, 1.734, 0.109, 5.810],
    [0.011, 0.011, 0.109, 0.420, 1.081],
    [2.167, 2.167, 5.810, 1.081, 0.191]
]

def vectorMatrix(matrix):
    vector = []
    for i in matrix:
        tmp = 1
        for j in i:
            if 2 <= j <= 10:
                tmp *= j
        if tmp == 1:
            vector.append(0)
        else:
            vector.append(round(tmp, 3))

    print(vector)

vectorMatrix(m)
Еще столкнулся с такой проблемой. При таком формате матрицы получаются другие значения в массиве vector
Python:
import math
N=int(input("Введите N:"))
a=[[0 for i in range(N)] for j in range(N)]
def printMatrix ():
    for i in range (N):
        for j in range (N):
            a[i][j]=(i+j)*abs(math.sin(i*j))**3
    for i in range (N):
        for j in range (N):
            if j==0:
                j=1
            if i==0:
                i=1
            print ("{:0.3f}".format(a[i][j]), end =' ')
        print()
    return a
printMatrix ()

def vectorMatrix(matrix):
    vector = []
    for i in matrix:
        tmp = 1
        for j in i:
            if 2 <= j <= 10:
                tmp *= j
        if tmp == 1:
            vector.append(0)
        else:
            vector.append(round(tmp, 3))
    print(vector)
vectorMatrix(a)

1.192 1.192 2.255 0.011 2.167
1.192 1.192 2.255 0.011 2.167
2.255 2.255 1.734 0.109 5.810
0.011 0.011 0.109 0.420 1.081
2.167 2.167 5.810 1.081 0.191
[0, 4.888, 13.105, 0, 12.593]
[/I][/I]
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 586
459
83
Еще столкнулся с такой проблемой. При таком формате матрицы получаются другие значения в массиве vector
Python:
import math
N=int(input("Введите N:"))
a=[[0 for i in range(N)] for j in range(N)]
def printMatrix ():
    for i in range (N):
        for j in range (N):
            a[i][j]=(i+j)*abs(math.sin(i*j))**3
    for i in range (N):
        for j in range (N):
            if j==0:
                j=1
            if i==0:
                i=1
            print ("{:0.3f}".format(a[i][j]), end =' ')
        print()
    return a
printMatrix ()

def vectorMatrix(matrix):
    vector = []
    for i in matrix:
        tmp = 1
        for j in i:
            if 2 <= j <= 10:
                tmp *= j
        if tmp == 1:
            vector.append(0)
        else:
            vector.append(round(tmp, 3))
    print(vector)
vectorMatrix(a)

1.192 1.192 2.255 0.011 2.167
1.192 1.192 2.255 0.011 2.167
2.255 2.255 1.734 0.109 5.810
0.011 0.011 0.109 0.420 1.081
2.167 2.167 5.810 1.081 0.191
[0, 4.888, 13.105, 0, 12.593]
[/I][/I]
вы посмотрите что у вас в переменной а

Python:
import math
N=int(input("Введите N:"))
a=[[0 for i in range(N)] for j in range(N)]
def printMatrix ():
    for i in range (N):
        for j in range (N):
            a[i][j]=(i+j)*abs(math.sin(i*j))**3
    for i in range (N):
        for j in range (N):
            if j==0:
                j=1
            if i==0:
                i=1
            #print ("{:0.3f}".format(a[i][j]), end =' ')
        #print()
    return a
print(printMatrix())

def vectorMatrix(matrix):
    vector = []
    for i in matrix:
        tmp = 1
        for j in i:
            if 2 <= j <= 10:
                tmp *= j
        if tmp == 1:
            vector.append(0)
        else:
            vector.append(round(tmp, 3))
    print(vector)
vectorMatrix(a)
 
  • Мне нравится
Реакции: paveldunaev

Форум IT Специалистов