我有一个时间序列数据。生成数据
date_rng = pd.date_range('2019-01-01', freq='s', periods=400)
df = pd.DataFrame(np.random.lognormal(.005, .5,size=(len(date_rng), 3)),
columns=['data1', 'data2', 'data3'],
index= date_rng)
s = df['data1']
Run Code Online (Sandbox Code Playgroud)
我想创建一条连接局部最大值和局部最小值的锯齿形线,它满足在 y 轴上|highest - lowest value|每条锯齿形线必须超过前一个距离的百分比(比如 20%)的条件之字形线,以及预先设定的值 k(比如 1.2)
我可以使用以下代码找到局部极值:
# Find peaks(max).
peak_indexes = signal.argrelextrema(s.values, np.greater)
peak_indexes = peak_indexes[0]
# Find valleys(min).
valley_indexes = signal.argrelextrema(s.values, np.less)
valley_indexes = valley_indexes[0]
# Merge peaks and valleys data points using pandas.
df_peaks = pd.DataFrame({'date': s.index[peak_indexes], 'zigzag_y': s[peak_indexes]})
df_valleys = pd.DataFrame({'date': s.index[valley_indexes], 'zigzag_y': s[valley_indexes]})
df_peaks_valleys = pd.concat([df_peaks, df_valleys], axis=0, ignore_index=True, sort=True)
# …Run Code Online (Sandbox Code Playgroud) 我的场景是我们有多个拥有自己数据的对等点,位于不同的目录中,具有相同的子目录结构。我想使用这些数据训练模型,但是如果我将它们全部复制到一个文件夹中,我将无法跟踪哪些数据来自谁(偶尔也会创建新数据,因此不适合保留复制文件每次)我的数据现在存储如下:
-user01
-user02
-user03
...
Run Code Online (Sandbox Code Playgroud)
(它们都有相似的子目录结构)
我已经搜索了解决方案,但我只在这里和这里找到了多输入案例,它们将多个输入连接成 1 个单个并行输入,这不是我的情况。
我知道flow_from_directory()一次只能由 1 个目录提供,那么如何构建一个可以一次由多个目录提供的自定义目录?
如果我的问题是低质量的,请提供有关如何改进它的建议,我也在 keras 的 github 上进行了搜索,但没有找到任何我可以适应的内容。
谢谢你。
我将每个数据点存储在.npy文件中,并带有shape=(1024,7,8)。我想将它们加载到通过类似的方式Keras模型ImageDataGenerator,所以我写和尝试不同的自定义的发电机,但他们没有工作,这里是一个我改编自这
def find(dirpath, prefix=None, suffix=None, recursive=True):
"""Function to find recursively all files with specific prefix and suffix in a directory
Return a list of paths
"""
l = []
if not prefix:
prefix = ''
if not suffix:
suffix = ''
for (folders, subfolders, files) in os.walk(dirpath):
for filename in [f for f in files if f.startswith(prefix) and f.endswith(suffix)]:
l.append(os.path.join(folders, filename))
if not recursive:
break
l
return l
def generate_data(directory, batch_size):
i = 0
file_list …Run Code Online (Sandbox Code Playgroud) 我有一个简单的代码:
path = [filepath1, filepath2, filepath3]
def umap_embedding(filepath):
file = np.genfromtxt(filepath,delimiter=' ')
if len(file) > 20000:
file = file[np.random.choice(file.shape[0], 20000, replace=False), :]
neighbors = len(file)//200
if neighbors >= 2:
neighbors = neighbors
else:
neighbors = 2
embedder = umap.UMAP(n_neighbors=neighbors,
min_dist=0.1,
metric='correlation', n_components=2)
embedder.fit(file)
embedded = embedder.transform(file)
name = 'file'
np.savetxt(name,embedded,delimiter=",")
if __name__ == '__main__':
p = Pool(processes = 20)
start = time.time()
for filepath in path:
p.apply_async(umap_embedding, [filepath])
p.close()
p.join()
print("Complete")
end = time.time()
print('total time (s)= ' + str(end-start)) …Run Code Online (Sandbox Code Playgroud) 我有多个数据框,示例数据:
df1:
user_id username firstname lastname
123 abc abc abc
456 def def def
789 ghi ghi ghi
Run Code Online (Sandbox Code Playgroud)
df2:
user_id username firstname lastname
111 xyz xyz xyz
456 def def def
234 mnp mnp mnp
Run Code Online (Sandbox Code Playgroud)
df3:
user_id username firstname lastname
789 ghi ghi ghi
456 def def def
222 uwv uwv uwv
Run Code Online (Sandbox Code Playgroud)
我想连接这些数据框,删除重复的行,并通过添加更多列来跟踪行的来源。期望的输出:
df1:
user_id username firstname lastname df1 df2 df3
123 abc abc abc 1 0 0
456 def def def 1 1 1
789 ghi ghi ghi 1 …Run Code Online (Sandbox Code Playgroud) 我的熊猫数据框有这样的字符串
A=1;B=3;C=c6
A=2;C=c7;D=8
Run Code Online (Sandbox Code Playgroud)
我想将每个字段中的值提取到单独的列中,然后将字段名称用作这样的列
A B C D
1 3 c6 NaN
2 NaN c7 8
Run Code Online (Sandbox Code Playgroud)
我尝试拆分df.str.split('=|;', expand=True)但它将值和字段拆分为单独的列
我也尝试过使用,df.str.extract(r'=\s*([^\.]*)\s*\;', expand=True)但它只返回第一次出现的值。
感谢您的帮助