计算python中n维字段的邻居

时间:2016-10-27 18:57:03

标签: python math

当给定n维矩阵和1的网格大小时,我想计算一个字段的最近邻居。 下面给出了一个二维场的例子

P = (1,1)

p_neighbours = [(0,0),(2,2),(0,1),(0,2),(1,0),(2,0),(2,1),(1,2)]

在数学上,这可以像矢量系统中的P +/- 1一样容易描述(据我所知)。 n维相邻阵列的大小被描述为(n ^ 3)-1 我已经找到了一个非常好的old topic,无论如何我无法理解如何将所提出的解决方案扩展到n维函数。

4 个答案:

答案 0 :(得分:5)

#include <stdio.h>
#include <stdlib.h>
#define maxstring 100
#define maxc 10

int main()
{
char c, text[maxc][maxstring];
int i, j, n, k;

printf("Enter amount of strings:");
scanf("%d", &k);

for(j=0; j<=k; j++)
{
    for(i=0; (c=getchar())!='\n'; i++)
    {
        text[j][i]=c;
    }
}
n=i;
    for(j=0; j<=k; j++)
{
    for(i=0; i<n; i++)
    {
        putchar(text[j][i]);
    }


}

   return 0;
 }

答案 1 :(得分:1)

正确地说,n维相邻阵列的大小不是(n ^ 3)-1,它是(3 ^ n)-1(如果n> 3,则数组大小是方式更大!)要在任何维度生成邻居,你必须实现一个递归算法,迭代维度并调用自身(我不知道如何实现这个,但我正在研究它)

答案 2 :(得分:0)

我想应该是这样的

$SKU = array('ASUSVNA1','esx','rer','ASUSasVNA1','itemsdasd','item 24');
$price = array(2,3,4,5,6,7);

答案 3 :(得分:0)

我认为最明确的方法是使用简单的列表理解:

p = (1,1)
px, py = p
p_neighbours = [(px+x,py+y) for x in range(-1,2) for y in range(-1,2) if (x,y) != (0,0)]

这里我们检查(x,y)是不是(0,0)以避免将p本身添加到它的邻居。