Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 定义具有非标准域的多维字段_Python_Numpy_Multidimensional Array - Fatal编程技术网

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

我在Python中有一个数组
a
,比方说
a=np.array([3,4])
,我想定义一个类型为[-3:3,-4:4]的数组(或类似的数组),换句话说,是实数的集合x
x[-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]])]