Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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_Signal Processing_Numpy Ndarray_In Memory - Fatal编程技术网

如何在Python中模拟较大的周期数组

如何在Python中模拟较大的周期数组,python,signal-processing,numpy-ndarray,in-memory,Python,Signal Processing,Numpy Ndarray,In Memory,我想将一对d维数组传递给scipy.signal.correlate,但我想计算它,就像两个输入在每个方向上都是周期性的一样。因此,在一维中,如果我的数组是[1,2,3]和[4,5,6],我想传递给scipy.signal.correlate[1,2,3,1,2,3,1,2,3]和[4,5,6,4,5,6,4,5,6],这将返回一个大小为17的新数组,然后我将其中间9个元素切掉。但是,如果可能的话,我不想实际复制内存中输入数组的完整数据,这会将输入的大小乘以3^d,而只是提供数组的视图,就好像它

我想将一对d维数组传递给scipy.signal.correlate,但我想计算它,就像两个输入在每个方向上都是周期性的一样。因此,在一维中,如果我的数组是[1,2,3]和[4,5,6],我想传递给scipy.signal.correlate[1,2,3,1,2,3,1,2,3]和[4,5,6,4,5,6,4,5,6],这将返回一个大小为17的新数组,然后我将其中间9个元素切掉。但是,如果可能的话,我不想实际复制内存中输入数组的完整数据,这会将输入的大小乘以3^d,而只是提供数组的视图,就好像它们被平铺到一个比3^d大的超立方体中一样。尽管如此,我知道correlate函数的输出仍然会给我一个远大于输入数组大小3^d倍的结果

似乎做了我想做的事

a = [[1, 2, 3], 
     [2, 4, 6],  
     [3, 6, 9]]
tiled_a = numpy.tile(a, numpy.ones(a.ndim, int) * 3)
print(tiled)

正确的答案是

[[1 2 3 1 2 3 1 2 3]
 [2 4 6 2 4 6 2 4 6]
 [3 6 9 3 6 9 3 6 9]
 [1 2 3 1 2 3 1 2 3]
 [2 4 6 2 4 6 2 4 6]
 [3 6 9 3 6 9 3 6 9]
 [1 2 3 1 2 3 1 2 3]
 [2 4 6 2 4 6 2 4 6]
 [3 6 9 3 6 9 3 6 9]]

但我不相信这只是一个视图,但实际上占用的内存是原始阵列的9倍。

我不确定这是否有帮助,但是-w.r.t.您上面的示例-查看:

l1 = [1, 2, 3] * 3
l2 = [2, 4, 6] * 3
l3 = [3, 6, 9] * 3
m = [l1, l2, l3, l1, l2, l3, l1, l2, l3]
print(m)
m[0][0] = 100
print(m)

m中的前3个数组必须存储数据,其余数组指向前3个数组。如果您不感兴趣,请告诉我:如果不感兴趣,我将删除答案。

请重新制作,阅读并提供答案。为我实现此功能对于此网站来说是离题的。你必须诚实地尝试,然后就你的算法或技术提出一个具体问题。@PranavHosangadi我已经尝试过了。我已经研究了几种python数组操作方法,但在原则上没有一种方法能够满足我的需要。我不是在要求一个完整的实现,我是在问是否有一个内置的python方法或来自其他包的方法,甚至原则上可以实现我所要求的。什么,我应该列出我发现的所有不起作用的内置函数吗?不,但至少你应该包括你迄今为止最好的尝试,以及为什么它不符合你的要求。如果你确实做了诚实的尝试,为什么要保守秘密呢?分享你的尝试只会帮助人们回答你的问题-它为你的需求提供了更多的背景,让我们避免浪费你和我们的时间,因为我们建议了一些你尝试过但没有奏效的东西,让你的问题读起来不像是do X for me的问题,它只是试图使用StackOverflow作为免费的在线编码服务。原则上,这是我想要一个3x3大小的2d数组的结果,但是代码需要不知道数组的维数和大小,这两者都不是。它不是用来作为可用代码的,只是用来指出发生了什么。