我试图使用HDF5数据格式存储大约3000个numpy数组.数组长度从5306到121999 np.float64不等
我收到
Object dtype dtype('O') has no native HDF5 equivalent
错误,因为数据的不规则性numpy使用一般对象类.
我的想法是将所有数组填充到121999长度并将大小存储在另一个数据集中.
然而,这似乎在太空中效率很低,有更好的方法吗?
编辑:澄清一下,我想存储3126个数组dtype = np.float64.我将它们存储在a中,list并且当h5py执行例程时它将转换为数组,dtype = object因为它们的长度不同.为了说明它:
a = np.array([0.1,0.2,0.3],dtype=np.float64)
b = np.array([0.1,0.2,0.3,0.4,0.5],dtype=np.float64)
c = np.array([0.1,0.2],dtype=np.float64)
arrs = np.array([a,b,c]) # This is performed inside the h5py call
print(arrs.dtype)
>>> object
print(arrs[0].dtype)
>>> float64
Run Code Online (Sandbox Code Playgroud) 我写了一个脚本来启动一些并行运行的进程(简单单元测试).它会做N与工作num_workers同时并行处理.
我的第一个实现分批运行流程,num_workers似乎工作正常(我在false这里使用命令来测试行为)
import subprocess
errors = 0
num_workers = 10
N = 100
i = 0
while i < N:
processes = []
for j in range(i, min(i+num_workers, N)):
p = subprocess.Popen(['false'])
processes.append(p)
[p.wait() for p in processes]
exit_codes = [p.returncode for p in processes]
errors += sum(int(e != 0) for e in exit_codes)
i += num_workers
print(f"There were {errors}/{N} errors")
Run Code Online (Sandbox Code Playgroud)
但是,测试不会花费相同的时间,所以我有时候会等待慢速测试才能完成.因此,我重写了它,以便在完成任务时继续分配任务
import subprocess
import os
errors = 0
num_workers = 40 …Run Code Online (Sandbox Code Playgroud) 我正在做软件基础练习,并且combine_split在尝试证明辅助引理时遇到了困难。
当在证明过程reflexivity中应用时assert,尽管方程显然(x, y) = (x, y)是正确的,但证明过程只是挂在那里。
这是实现
Theorem combine_split : forall X Y (l : list (X * Y)) l1 l2,
split l = (l1, l2) ->
combine l1 l2 = l.
Proof.
intros X Y.
intros l.
induction l as [| n l' IHl'].
- simpl. intros l1 l2 H. injection H as H1 H2. rewrite <- H1, <-H2. reflexivity.
- destruct n as [n1 n2]. simpl. destruct (split l').
intros …Run Code Online (Sandbox Code Playgroud)