自变量范围内的最大值和最小值

2024-05-16 20:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文

根据“和平的詹姆斯”的回答,我试图减少混乱。因此,编辑问题

编辑

我试图在自变量范围内找到一个最大值(和最小值),即X。我的代码如下所示。注意,这只是一个代表性的函数

import numpy as np
import matplotlib.pyplot as plt
from pandas import *

X = np.arange(2, 11, 0.2)

Z = np.zeros((len(X),1))

for i in range(0,len(X)):
    Z[i] = 0.1*np.sin(X[i]-5)

print(DataFrame(Z))
A = np.argmax(Z, axis = 0)
B = np.argmin(Z, axis = 0)

C = print("Maximum =",Z[A[0]])
D = print("Minimum =", Z[B[0]])

plt.plot(X,Z,'r-', linewidth = 2)
plt.xlabel('$X$ (-)')
plt.ylabel('$Z$ (-)')

1:A = np.argmax(Z, axis = 0)最大值为0.09995736(指数:(23,0)),介于X值之间6 and 8

2:A = np.argmin(Z, axis = 0)最小值为-0.09995736(指数:(7,0)),介于X值之间2 and 4。但是,X8 and 10之间还有一个最小值。我想知道是否有一种方法可以将X的某种上限和下限值传递给np.argmin(或类似命令),以获得函数Z最小值

感谢您的帮助。谢谢


Tags: and函数代码import编辑lenasnp
1条回答
网友
1楼 · 发布于 2024-05-16 20:59:35

使用numpy.argsorthttps://numpy.org/devdocs/reference/generated/numpy.argsort.html

import numpy as np

X = np.arange(2, 11, 0.2)

Z = np.zeros((len(X),1))

for i in range(0,len(X)):
    Z[i] = 0.1*np.sin(X[i]-5)

C = np.argsort(Z, axis=0)
C = C.flatten()  # flatten because it is currently an array of 1-dim arrays.

print("Maximum =",Z[C[-1]])
print("Second Maximum =",Z[C[-2]])

print("Second Minimum =",Z[C[1]])
print("Minimum =",Z[C[0]])

相关问题 更多 >