微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError: x 和 y 必须具有相同的第一维,但具有形状 (1, 2) 和 (2,)

如何解决ValueError: x 和 y 必须具有相同的第一维,但具有形状 (1, 2) 和 (2,)

我想从列表中找到最大值和最小值,但在运行我的程序后,终端显示错误,如“ValueError: x 和 y 必须具有相同的第一维,但具有形状 (1,2) 和 (2,), ”。如何解决这个问题?

代码

from scipy.signal import argrelextrema

data = np.array([-1,1,2,-1,-2,1 ])
plt.plot(data)


maximums = argrelextrema(data,np.greater) 

plt.plot(maximums,data[maximums],"x")

minimums = np.array(argrelextrema(data,np.less))

plt.plot(minimums,data[minimums],".")

plt.show()

解决方法

正如你在 documentation 中看到的,maximaminima 不是一维数组而是 ndarrays 的元组

import numpy as np
from scipy.signal import argrelextrema
import matplotlib.pyplot as plt

data = np.array([-1,1,2,-1,-2,1 ])

maxima = argrelextrema(data,np.greater) 
minima = argrelextrema(data,np.less)

让我们检查一下

print(maxima)

给予

(array([ 3,11]),)

print(minima)

给予

(array([7]),)

因为你只需要元组的第一个元素,你可以这样做

plt.plot(data)
plt.plot(maxima[0],data[maxima[0]],"x",ms=10)
plt.plot(minima[0],data[minima[0]],".",ms=10)
plt.show()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。