如何将numpy ndarray的每个元素重复为双元素子数组?
解决NumPy数组元素重复的问题
嘿,这个需求用NumPy的内置方法就能轻松实现,我给你两种简单好用的方案:
方法一:使用np.repeat()
np.repeat()可以指定在某个维度上重复元素,我们只需要先给原数组增加一个新维度,再在这个新维度上重复两次即可:
import numpy as np # 先用布尔值示例,你可以替换成实际的T、F值(比如字符串'T'/'F') original_arr = np.array([[True, True, True, False], [False, False, True, False]]) # 新增一个维度后,在最后一维重复2次 result = np.repeat(original_arr[:, :, np.newaxis], repeats=2, axis=2) print(result)
输出结果的形状是(2, 4, 2),和你想要的结构完全一致:
[[[ True True] [ True True] [ True True] [False False]] [[False False] [False False] [ True True] [False False]]]
方法二:使用np.tile()
np.tile()是对数组进行平铺复制,同样先新增维度,再在最后一维平铺两次:
import numpy as np original_arr = np.array([[True, True, True, False], [False, False, True, False]]) # 对新增的维度进行2次平铺 result = np.tile(original_arr[:, :, np.newaxis], reps=(1, 1, 2))
这个方法和np.repeat()的效果完全一样,你可以根据自己的习惯选择。
小提示
如果之后需要调整每个元素的重复次数,只需要把代码里的2改成你想要的数字就行,无论是3次还是更多都适用,而且不管你的T、F是布尔值、字符串还是数字,这两个方法都能正常工作~
内容的提问来源于stack exchange,提问作者ErgiS
相关产品推荐
相关产品推荐

