如果我有一个包含 500k 个元素(仅限数字)的数组(列),我如何能够在每 500 个元素之后添加一个新元素?新的数字应该是相邻元素的平均值。
例如:在元素 499 和 500 之间有一个值为(499 的值+ 500 的值)/2 的新元素,依此类推。
a=np.array(h5py.File('/Users/Ad/Desktop//H5 Files/3D.h5', 'r')['Zone']['TOp']['data'])
output = np.column_stack((a.flatten(order="C"))
np.savetxt('merged.csv',output,delimiter=',')
提前致谢!
实现此目的的最佳方法可能是创建一个生成器并使用该生成器创建一个新数组。插入到 numpy 数组中实际上是不可能的,因为数组具有固定大小,因此您需要为每个插入创建一个新数组,这非常昂贵。用一个发电机 https://docs.python.org/3.10/glossary.html#term-generator您只需要遍历数组一次并只创建一个新数组。
def insert_every_500th_element(np_array):
prev = None
for idx, value in enumarate(np_array):
if idx != 0 and idx % 500 == 0: # we're at the 500th element - yield (499th + 500th value)/2
yield (prev+value)/2
yield value
a=np.array(h5py.File('/Users/Ad/Desktop//H5 Files/3D.h5', 'r')['Zone']['TOp']['data'])
a = np.fromiter(insert_every_500th_element(a), float)
output = np.column_stack((a.flatten(order="C"))
np.savetxt('merged.csv',output,delimiter=',')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)