我想检查矩阵的所有行是否包含至少一个负面元素。如果是这样,请更改矩阵中所有元素的符号。
这是我的尝试,但这样只会改变负面元素的符号:
matrix = [[5, -6, 2], [7, -2, 3], [8, 4, -9]]
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i][j] < 0:
print(matrix[i][j]*(-1))
答案 0 :(得分:2)
使用numpy
:
import numpy as np
In [108]: np.array(matrix) * -1
Out[108]:
array([[-5, 6, -2],
[-7, -2, -3],
[-8, -4, 9]])
或者,如果您想要最后的列表,可以使用tolist
方法:
In [124]: (np.array(matrix) * -1).tolist()
Out[124]: [[-5, 6, -2], [-7, -2, -3], [-8, -4, 9]]
答案 1 :(得分:0)
试试这个:
allRowsNegative = True;
for i in range(len(matrix)):
foundNegative = False;
for j in range(len(matrix[i])):
foundNegative = (foundNegative or matrix[i][j] < 0);
allRowsNegative = (allRowsNegative and foundNegative);
if allRowsNegative:
for i in range(len(matrix)):
for j in range(len(matrix[i])):
print(matrix[i][j]*(-1));
else:
for i in range(len(matrix)):
for j in range(len(matrix[i])):
print(matrix[i][j]);
答案 2 :(得分:0)
非numpy解决方案:
>>> matrix = [[5, -6, 2], [7, -2, 3], [8, 4, -9]]
>>> if all(any(x < 0 for x in sub) for sub in matrix):
... result = [[-x for x in sub] for sub in matrix]
...
>>> result
[[-5, 6, -2], [-7, 2, -3], [-8, -4, 9]]
numpy解决方案
>>> import numpy as np
>>> matrix = [[5, -6, 2], [7, -2, 3], [8, 4, -9]]
>>> m_arr = np.array(matrix)
>>> if np.all(np.any(m_arr < 0, axis=1)):
... result = (m_arr*(-1)).tolist()
...
>>> result
[[-5, 6, -2], [-7, 2, -3], [-8, -4, 9]]
答案 3 :(得分:0)
您可以使用np.any
检查每一行是否有一个可以给出数组的负数元素,然后您可以通过np.all
检查是否所有这些元素都有一个负数元素。如果是这样,则反转矩阵的符号。
import numpy as np
A = np.array([[5, -6, 2], [7, 2, 3], [8, 4, -9]])
if np.all(np.any(A<0,axis=1)):
A *= -1
答案 4 :(得分:0)
我想到的最简单的方法:
m = [[5,-6, 2], [7, -2, 3], [8, 4, -9], [2 , 4 ,6]]
for i in range(len(m)):
flag = False
for y in m[i]:
if(y<0):
flag = True
break
if (flag == True):
for j in range(len(m[i])):
m[i][j] = -1 * m[i][j]
print (m) # [[-5, 6, -2], [-7, 2, -3], [-8, -4, 9], [2, 4, 6]]
答案 5 :(得分:0)
检查所有行是否包含负数的好方法(假设您的矩阵至少为1x1,而不是空):
max(map(min, matrix)) < 0
总的来说:
if max(map(min, matrix)) < 0:
matrix[:] = [[-x for x in row] for row in matrix]
答案 6 :(得分:-1)
编辑:
首先,您可以检查矩阵是否包含至少一个负面元素,然后更改所有元素的符号。
matrix = [[5, -6, 2], [7, 2, 3], [8, 4, -9]]
hasNegativeElement = False
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i][j] < 0:
hasNegativeElement = True
break
if hasNegativeElement:
for i in range(len(matrix)):
for j in range(len(matrix[i])):
matrix[i][j] *= (-1)