python - X 等于 Y WHEN a==b 并且等于 Z WHEN b==c 在 Python 中
问题描述
这是我正在尝试做的事情:
数据框包含 EURUSD D1 的标准金融市场价值。
df = symbol_data("EURUSD","D1")
price = df["close"].iloc[-100:]
op = df['open'].iloc[-100:]
hi = df['high'].iloc[-100:]
lo = df['low'].iloc[-100:]
cl = df['close'].iloc[-100:]
max_idx = list(argrelextrema(hi.values, np.greater, order=10)[0])
min_idx = list(argrelextrema(lo.values, np.less, order=10)[0])
idx = max_idx + min_idx
idx.sort()
peaks = hi.values[max_idx] if max_idx == idx and lo.values[min_idx] if min_idx==idx
当我有一个最大值时,我希望峰值等于高值,当我有一个最小值时,我希望它们等于低值,并且我希望它们也按索引排序。
意义:
high_peaks = hi.values[max_idx]
low_peaks = lo.values[min_idx]
需要对这些峰值进行排序混合:
peaks = high_peaks and low_peaks
例如:
max_idx = [4, 31, 72, 97]
min_idx = [18, 43, 67]
idx = [4, 18, 31, 43, 67, 72, 97]
high_peaks = array([1.10947, 1.14955, 1.10167, 1.13829])
low_peaks = array([1.07772, 1.0635 , 1.07263])
我需要这个:
peaks = array([1.10947, 1.07772, 1.14955, 1.0635, 1.07263, 1.10167, 1.13829])
有谁知道如何做到这一点?
解决方案
这个答案将hi.values[max_idx]
or lo.values[min_idx]
(但绝不是混合)或 None放在peaks
.
peaks = hi.values[max_idx] if max_idx == idx else lo.values[min_idx] if min_idx == idx else None
等效地:
if max_idx == idx:
peaks = hi.values[max_idx]
elif min_idx == idx:
peaks = lo.values[min_idx]
else:
peaks = None
推荐阅读
- serverless-framework - 我可以在提供者级别定义“eventBus”吗?
- recommendation-engine - 规则引擎 VS 工作流引擎
- c++ - 如何在 C++ 中返回从零开始的向量索引
- computer-vision - 有没有办法在 google colab 上直播处理过的视频?
- excel - 将值添加到excel中的固定文本
- assembly - mov ebx, sval(input("Input number")) 写入 eax
- azure-data-lake - U-SQL + Python PDF 文件 parsing.in Azure Data Lake Analytics
- c# - 如何获取列表
在转换器类 wpf - c# - 如何在引用表中插入外键?
- node.js - 无法将猫鼬连接到 Atlas-MogoDB