获取每个元素的反转并将其放在python中的数组中

时间:2013-10-27 14:30:03

标签: python sage

伙计们,我对编程非常陌生,所以我想要你的帮助。我想创建一个函数,它采用一个二维数组并将每个非零元素映射到它的反向并将它放在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]])

所以请帮忙吗?

3 个答案:

答案 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”放在顶部。