我需要在下面的numpy数组 * 中重复元素,以使元素基于子元素的值重复。在执行重复时,我想将元素的第三个值重置为1。
arr = np.array([[A, B, 1],
[B, C, 2],
[C, D, 3],
[D, E, 1]])
所需输出:
[[A, B, 1],
[B, C, 1],
[B, C, 1],
[C, D, 1],
[C, D, 1],
[C, D, 1],
[D, E, 1]]
下面的代码运行良好,但是对于大型数据集,它会变得非常慢。~ 500 k长度。
_arr = primary_auto.to_records()
pm_arr = np.empty((0,3))
for i in range(len(_arr)):
for nr in range(_arr[i][2]):
pm_arr = np.append(pm_arr, np.array([[_arr[i][0],_arr[i][1],1]]), axis = 0)
2条答案
按热度按时间z18hc3ub1#
使用
numpy.repeat
,然后分配1
:注意,由于字符串,所有的数组将是字符串,你需要转换为整数为
repeat
输出量:
zwghvu4y2#
我用numpy找到了答案