当你阅读这个问题时,你会发现我是Python和NumPy的新手,所以请原谅任何不正确的术语。
我目前正在使用两个NumPy数组,我们称之为x
和y
。
x = numpy.array(0)
y = numpy.array(0)
我正在使用这些数组作为输入和输出的函数对这些数组进行操作。
x, y = function1(x, y)
x, y = function2(x, y)
...
这看起来不够优雅,因为如果我可以让它们成为同一个对象的一部分,那么我只能对这些函数进行单一输入和输出。我想让代码更简单,如果可能的话。
x = function1(x)
x = function2(x)
...
事实证明,y
描述了x
中的数据(不是在这个玩具示例中,而是我的实际数组)所以我想我会将y
设置为x
。我的母语是MATLAB,我想我可以使用类似于创建结构层次结构的语法。
x.y = y
这不起作用,不幸的是,我不知道足够的Python术语来了解在线寻找什么解决方案。
如果您有任何建议和/或我是否可以就此问题提供任何说明,请与我们联系。
答案 0 :(得分:1)
我认为您获得的错误与'array' object has no attribute 'y'
一致。
在这种情况下,如果你真的只想将这些东西捆绑在一起,我建议使用元组。以下是它们如何适用于您的用例的一些示例:
def myFunc1(x, y):
# do stuff with x and y
return ??? # x or y or... both, somehow?
def myFunc2(xy_bundle): # where xy_bundle is x and y packed into a tuple!
x, y = xy_bundle # or: x = xy_bundle[0]; y = xy_bundle[1];
# do stuff with x and y
return (x, y) # syntax for creating a tuple inline
您可以使用tup[x]
表示法来访问元组的各个成员,就像列表或数组一样,或者您可以隐式unpack
表示它们,就像在myFunc2中一样。元组是一个非常标准的工具,可以通过函数移动多个东西,但是如果你发现自己经常使用它们,你可能会有自定义类或其他东西的情况。
正如评论中所说的那样,不清楚你想要将数组作为另一个数组属性的动机是什么,但对我来说这似乎是一个坏主意。如果你有相互依赖的数组,你肯定可以继承大熊猫' array
并向其添加property
。但是看起来过于复杂。
编辑:调用这些东西!您的代码可能如下所示:
new_x = do_thing_with_array(x)
new_y = do_thing_with_array(y)
这通常会改为:
arrs = (x, y)
new_x, new_y = do_thing_with_arrays(arrs)
希望这是你想要的。
答案 1 :(得分:1)
您可以创建一个包含这两个数组的简单类。
class Xy(object):
def __init__(self, x, y):
self.x = x
self.y = y
import numpy as np
x = np.array(range(10))
y = np.array(range(10))
xy = Xy(x,y)
def square(xy):
x = xy.x
y = xy.y
x **= 2
y **= 2
return Xy(x,y)