首页 > 解决方案 > 如何将数组导入函数并导出结果数组

问题描述

我有 numpy 数组(x、y 和 z 坐标)并想使用函数进行一些计算,最后将计算结果导出为 numpy 数组(为简单起见,我只是复制了一个简单的案例):

point_1 = np.array ([[1., 2., 1.],
                   [0., 1., 1.]])
point_2 = np.array ([[0., 0., 1.],
                   [1., 0., 2.]])
a = 1.
b = 2.
c = 3.
d = 4.

在我的函数中,我想使用数组的每一行的第二 ( )和y第三 ( z) 列来计算同一行的第一列 () 的新值。实际上每一行都是一个坐标,我想为每一行计算一个新的。然后,我想给他们一个新的数组。这也是我的功能:point_1point_2xx

def fun_1(x, y, z):
    points_new = np.array([])
    new_x = -(d + b * y + c * z) / a
    points_new = np.append(points_new, new_x)
    return points_new

np.vstack((point_1,point_2))对于输入,例如将结果导入我的函数(我的意思是fun_1(np.vstack((point_1,point_2))对我来说效率更高。但是,这个功能并没有给我我想要的输出。我希望有:

points_new=np.array ([[-11., 2., 1.],
                       [-9., 1., 1.],
                       [-7., 0., 1.],
                       [-10., 0., 2.]])

在此之前,我非常感谢任何贡献。

标签: pythonfunctionnumpy

解决方案


您可以使用map功能和修改版本的组合fun_1

def fun_1(row):
    a, b, c, d = 1., 2., 3., 4.
    row[0] = -(d + b * row[1] + c * row[2]) / a
    return row

point_1 = np.array([[1., 2., 1.],[0., 1., 1.]])
point_2 = np.array([[0., 0., 1.],[1., 0., 2.]])

points_list = [point_1, point_2]
new_points = np.asarray(list(map(fun_1, [x for point in points_list for x in point])))

它适用于您附加到points_list.


推荐阅读