我试图合并两个数组(5000,2)
包含整数和(5000,7)
包含浮点数。我需要分配名称作为列标题时写入h5,然而,当我试图分配名称和数据类型数组中的每一列得到重复9 times.
代码如下:
namesList = ['EID', 'Domain', 'LAM ID1', 'LAM ID2','LAM ID3', 'LAM ID4', 'LAM ID5', 'LAM ID6', 'LAM ID7']
formatsList = ['int', 'int', 'float', 'float', 'float', 'float', 'float', 'float', 'float']
ds_dt = np.dtype({'names':namesList, 'formats':formatsList})
Final_Lam_Strength = np.concatenate((LAM_Strength_RFs_Data, LAM_Strength_RFs), axis=1).astype(ds_dt)
字符串
谢谢
2条答案
按热度按时间wz3gfoph1#
直接加载数据到HDF5
如果你的目标是使用h5py将数据加载到HDF5,那么就不需要在另一个数组中复制数据。你可以直接通过创建数据集然后添加数据来完成。下面是我创建的一些简单数据的过程:
字符串
创建NumPy结构化数组
现在,如果你真的需要一个NumPy数组,用
np.empty()
创建它,用行数定义形状,用ds_dt
定义dtype
。然后使用命名字段和列引用加载数据。这继续从上面的例子的数据:
型
创建NumPy记录数组
函数
np.core.records.fromarrays
在上面的注解中提到过。为了完整起见,这里有一个使用该方法的替代方法。在调用这个函数之前,你不需要创建空数组。型
结构化数组和记录数组的注意事项
第一个NumPy方法创建一个结构化数组,第二个方法创建一个记录数组。它们类似,但略有不同。记录数组使用点表示法提供对字段(列)的访问。提供示例打印语句以显示差异。此外,
np.core.records.fromarrays
方法需要中间数据结构这对你的数据来说不是问题,但是如果你有很多数据(比如10E6行和200列),这可能是一个问题。j2cgzkjk2#
另一个答案中的
empty
和按字段复制的方法是好的。但是np.lib.recfunctions
有一个效用函数,可能会使这更容易。字符串
所以你有一个有9个字段的dtype,2个
int
,7个float
。concatenate
生成一个(n,9)浮点数:型
我几乎惊讶于
unstructured_to_stuctured
工作得如此之好。这里有一个替代的dtype,它将7个浮点数保持在一起:
型
将名称转换为“列”对于某些目的来说可能很方便,但这会使跨字段工作变得更加尴尬。