伙计们,我对编程非常陌生,所以我想要你的帮助。我想创建一个函数,它采用一个二维数组并将每个非零元素映射到它的反向并将它放在new_arr
但它不能给我我需要的东西
这是我的代码:
def question(arr):
for i in range(3):
for j in range(3):
z = arr[i][j]
new_arr[i][j] = z^-1
return new_arr[i][j]
question([[70,52,13,67],[90,48,57,26],[43,45,67,89],[88,65,44,23]])
所以请帮忙吗?
答案 0 :(得分:4)
您可以使用list comprehension来解决此问题
def question(arr):
return [[1.0/col if col else col for col in row] for row in arr]
print question([[70,52,13,67],[90,48,57,26],[43,45,67,89],[88,65,44,23]])
以你的方式做到这一点
def question(arr):
new_arr = []
for i in range(len(arr)):
row_arr = []
for j in range(len(arr[i])):
row_arr.append(arr[i][j] ** -1)
new_arr.append(row_arr)
return new_arr
print question([[70,52,13,67],[90,48,57,26],[43,45,67,89],[88,65,44,23]])
您必须为每一行创建一个新列表并将其附加到结果中。 BTW,^
指的是python中的按位异或。因此,您可能希望使用1.0/x
表单或x**-1
表单。 **
指的是权力,在python中。
答案 1 :(得分:0)
如果您可以使用numpy并且任何0项都可以接受inf值:
import numpy as np
a = np.array([[70,52,13,67],[90,48,57,26],[43,45,67,89],[88,65,44,0]],
dtype = np.float32)
>>>
>>> 1/a
array([[ 0.01428571, 0.01923077, 0.07692308, 0.01492537],
[ 0.01111111, 0.02083333, 0.01754386, 0.03846154],
[ 0.02325581, 0.02222222, 0.01492537, 0.01123596],
[ 0.01136364, 0.01538462, 0.02272727, inf]], dtype=float32)
>>> a**-1
array([[ 0.01428571, 0.01923077, 0.07692308, 0.01492537],
[ 0.01111111, 0.02083333, 0.01754386, 0.03846154],
[ 0.02325581, 0.02222222, 0.01492537, 0.01123596],
[ 0.01136364, 0.01538462, 0.02272727, inf]], dtype=float32)
>>> pow(a, -1)
array([[ 0.01428571, 0.01923077, 0.07692308, 0.01492537],
[ 0.01111111, 0.02083333, 0.01754386, 0.03846154],
[ 0.02325581, 0.02222222, 0.01492537, 0.01123596],
[ 0.01136364, 0.01538462, 0.02272727, inf]], dtype=float32)
>>>
>>> inverse_of_a = 1/a
>>> inverse_of_a
array([[ 0.01428571, 0.01923077, 0.07692308, 0.01492537],
[ 0.01111111, 0.02083333, 0.01754386, 0.03846154],
[ 0.02325581, 0.02222222, 0.01492537, 0.01123596],
[ 0.01136364, 0.01538462, 0.02272727, inf]], dtype=float32)
>>>
答案 2 :(得分:-1)
如果您希望Python计算“z ^ -1”,则必须使用数学模块。 math模块有一个函数pow,它接受两个参数,并返回base ^ power。 这是pow的文档的link。
您应该将“z ^ -1”替换为“math.pow(z,-1)”并将“import math”放在顶部。