Python 定义具有非标准域的多维字段
我在Python中有一个数组Python 定义具有非标准域的多维字段,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,我在Python中有一个数组a,比方说a=np.array([3,4]),我想定义一个类型为[-3:3,-4:4]的数组(或类似的数组),换句话说,是实数的集合xx[-3,-4],x[-3,-3],…,x[3,4],在-a[I]和a[I]之间的整数上的第I个坐标范围。如果数组长度给定(本例中为2),我可以使用 np.mgrid[-a[0]:a[0]:1.0,-a[1]:a[1]:1.0][0] 但是如果a的长度未知,我该怎么办呢?您可以使用 [np.arange(-x,x+1) for x in
a
,比方说a=np.array([3,4])
,我想定义一个类型为[-3:3,-4:4]的数组(或类似的数组),换句话说,是实数的集合xx[-3,-4],x[-3,-3],…,x[3,4]
,在-a[I]和a[I]之间的整数上的第I个坐标范围。如果数组长度给定(本例中为2),我可以使用
np.mgrid[-a[0]:a[0]:1.0,-a[1]:a[1]:1.0][0]
但是如果a的长度未知,我该怎么办呢?您可以使用
[np.arange(-x,x+1) for x in a]
我必须使用mgrid
,或者index\u tricks
中的另一个函数来了解如何使用它。我可以将其设置为元组
,或者使用*
传递它
mgrid
需要切片,因此这将复制您的第一个调用
In [60]: np.mgrid[[slice(-x,x+1) for x in [3,4]]]
Out[60]:
array([[[-3, -3, -3, -3, -3, -3, -3, -3, -3],
[-2, -2, -2, -2, -2, -2, -2, -2, -2],
[-1, -1, -1, -1, -1, -1, -1, -1, -1],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 3, 3, 3, 3, 3, 3, 3, 3, 3]],
[[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4]]])
这当然可以推广到使用a
我最初的arange
方法使用meshgrid
(生成数组列表):
命名
np.array
shape不是一个好主意,因为shape
是所有np.array
s.Thx的一个属性,改为“a”。如果这是一个错误的问题,我很抱歉,我不擅长编程,无法解决这个问题:(你是说在一个包含符号变量的网格上进行符号操作吗?也许你可以使用Symphy,但一般来说,这对数值计算来说是个坏主意,你可能会更好地使用计算机代数系统。@F先生,我真正需要的是设置一个由n维整数向量索引的实数字段(使用正坐标和负坐标),然后应用离散傅里叶变换并进一步处理。这是正在开发的大型python软件的一部分,但我当然可以使用另一个系统…是的,谢谢。重点是,我不能将x
定义为np.meshgrid(…)
然后分配x[-3,-2]=某物,因为他将负索引理解为“从末尾开始计数”因此,对我来说,最好是简单地将所有索引转换为正数,正如all_m…mgrid
所建议的那样,这样可以生成数组,用于生成其他值,包括总和、乘积等。但实际索引是“固定的”——0…n
。这使关键步骤简单而快速。我相信pandas
tries为您提供了更多通用的索引选项。谢谢,我现在明白了,我现在可以非常简单地通过重新索引到正索引来解决我的问题。我将通过np.zero(…)定义我的对象,然后在那里分配我需要的内容。我不知道负索引有问题。尊敬的!
In [71]: np.meshgrid(*[np.arange(-x,x+1) for x in [3,4]],indexing='ij')
Out[71]:
[array([[-3, -3, -3, -3, -3, -3, -3, -3, -3],
[-2, -2, -2, -2, -2, -2, -2, -2, -2],
...
[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4],
[-4, -3, -2, -1, 0, 1, 2, 3, 4]])]