1

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

所以有什么帮助吗?

4

3 回答 3

4

您可以使用列表推导来解决此问题

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]])

您必须为每一行创建一个新列表并将其附加到结果中。顺便说一句,^是指 python 中的按位异或。因此,您可能想要使用1.0/x表单或x**-1表单。**指权力,在python中。

于 2013-10-27T14:33:49.627 回答
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)
>>>
于 2013-10-27T18:10:28.327 回答
-1

如果您希望 Python 计算“z^-1”,则必须使用数学模块。数学模块有一个函数 pow,它接受两个参数,并返回 base^power。这是pow 文档的链接。

您应该将“z^-1”替换为“math.pow(z, -1)”,并将“import math”放在顶部。

于 2013-10-27T14:35:26.963 回答