假设我有两个非常简单的数组numpy:
import numpy as np
reference=np.array([0,1,2,3,0,0,0,7,8,9,10])
probe=np.zeros(3)
我想找出数组reference
的哪一个切片与数组probe
具有最高的皮尔逊相关系数,为此,我想使用在for循环中重叠的某种子数组对数组reference
进行切片,这意味着我每次移动reference
的一个元素,并将其与数组probe
进行比较。我使用下面的非优雅代码进行切片:
from statistics import correlation
for i in range(0,len(reference)):
#get the slice of the data
sliced_data=reference[i:i+len(probe)]
#only calculate the correlation when probe and reference have the same number of elements
if len(sliced_data)==len(probe):
my_rho = correlation(sliced_data, probe)
我对这样一个准则有一个问题:
1-一旦我运行代码,我有下面的错误:
my_rho = correlation(sliced_data, probe)
File "/usr/lib/python3.10/statistics.py", line 919, in correlation
raise StatisticsError('at least one of the inputs is constant')
statistics.StatisticsError: at least one of the inputs is constant
2-有没有一种更优雅的方法来使用python进行这种切片?
1条答案
按热度按时间j2datikz1#
您可以使用
sliding_window_view
获取连续值,对于相关性的矢量化计算,请使用custom function:输出: