首页 > 解决方案 > 使用元组初始化 NumPy 数组(填充相同的元组)

问题描述

我想创建一个最初填充相同元组的数组,特别是NaN. 例如,

array([[(nan, nan), (nan, nan)],
       [(nan, nan), (nan, nan)],
       [(nan, nan), (nan, nan)]], dtype=object)

但是,当使用此处列出的数组初始化时,使用可迭代值作为填充数组的值,python显然会尝试将该可迭代重新整形为新数组,而不是用它填充它:

np.full([3,2],(np.nan,np.nan,np.nan),dtype=tuple)
#ValueError: could not broadcast input array from shape (3) into shape (3,2)

np.fill也不起作用,它需要一个标量。

是否只能逐项填充数组?

标签: pythonarraysnumpytuples

解决方案


您可以使用正确的dtype. 您可以使用;'f,f'的元组初始化数组 floats有关更多信息,请参见数据类型对象 (dtype)

np.full((3,2), np.nan, dtype='f,f')

array([[(nan, nan), (nan, nan)],
       [(nan, nan), (nan, nan)],
       [(nan, nan), (nan, nan)]], dtype=[('f0', '<f4'), ('f1', '<f4')])

推荐阅读