Python 应用numpy';s与特定轴的相关性(自相关)

Python 应用numpy';s与特定轴的相关性(自相关),python,arrays,numpy,Python,Arrays,Numpy,假设我有一个100x100x100numpy阵列。我试图将这个数组的np.correlate与它自身相关联,但只应用于它的一个轴,比如轴1。在一个理想的世界里,这应该是 print(a.shape) # (100,100,100,100) correlated = np.correlate(a, a, "full", axis=1) print(correlated.shape) # (100,199,100,100) 因此,基本上与np.fft的行为相同,但具有相关性。我可以迭代所有其他维度

假设我有一个100x100x100numpy阵列。我试图将这个数组的
np.correlate
与它自身相关联,但只应用于它的一个轴,比如轴1。在一个理想的世界里,这应该是

print(a.shape) # (100,100,100,100)
correlated = np.correlate(a, a, "full", axis=1)
print(correlated.shape) # (100,199,100,100)
因此,基本上与np.fft的行为相同,但具有相关性。我可以迭代所有其他维度,然后在每一步计算相关性,但是这些数组会变得非常大,这会变得非常缓慢


有没有一种更快捷的方法?我尝试使用
apply\u over\u axes
,但显然不可能。而且,
apply\u over\u axes
vectorize
,等等都是隐藏的python循环,所以我想这不会有什么好处。

欢迎来到@保尔·潘泽尔:我希望这是一个直截了当的答案,但我很失望地看到事实显然并非如此。哦,好吧……如果你真的急需它,你可以按照扎克的建议去做(他的选项(2))@PaulPanzer我不知道足够的C来重新编程相关函数。我想我现在只能在python上做了。甚至可以用fortran语言编程。你不必接触任何C语言,fftconvolve是用python编写的。它把fftn称为重型起重设备,fftn实际上让你可以在你有兴趣的时候选择斧头。因此,您必须修改此代码以接受Axis参数,并将其传递给fftn,再加上一些轻微的注释但可行的簿记。也就是说,到目前为止,我都懒得自己做这件事了……欢迎来到这里@保尔·潘泽尔:我希望这是一个直截了当的答案,但我很失望地看到事实显然并非如此。哦,好吧……如果你真的急需它,你可以按照扎克的建议去做(他的选项(2))@PaulPanzer我不知道足够的C来重新编程相关函数。我想我现在只能在python上做了。甚至可以用fortran语言编程。你不必接触任何C语言,fftconvolve是用python编写的。它把fftn称为重型起重设备,fftn实际上让你可以在你有兴趣的时候选择斧头。因此,您必须修改此代码以接受Axis参数,并将其传递给fftn,再加上一些轻微的注释但可行的簿记。也就是说,到目前为止,我自己都懒得去做。。。