gpt4 book ai didi

python - 二维 numpy 数组列中的唯一条目

转载 作者:行者123 更新时间:2023-12-04 07:44:42 28 4
gpt4 key购买 nike

我有一个整数数组:

import numpy as np

demo = np.array([[1, 2, 3],
[1, 5, 3],
[4, 5, 6],
[7, 8, 9],
[4, 2, 3],
[4, 2, 12],
[10, 11, 13]])
我想要列中的唯一值数组,如有必要填充一些东西(例如 nan):
[[1, 4, 7, 10, nan],
[2, 5, 8, 11, nan],
[3, 6, 9, 12, 13]]

当我遍历转置数组并使用 boolean_indexing solution from a previous question 时,它确实有效.但我希望有一个内置方法:
solution = []
for row in np.unique(demo.T, axis=1):
solution.append(np.unique(row))

def boolean_indexing(v, fillval=np.nan):
lens = np.array([len(item) for item in v])
mask = lens[:,None] > np.arange(lens.max())
out = np.full(mask.shape,fillval)
out[mask] = np.concatenate(v)
return out

print(boolean_indexing(solution))

最佳答案

AFAIK,没有内置的解决方案。话虽如此,您的解决方案对我来说似乎有点复杂。您可以创建一个带有初始化值的数组,并用一个简单的循环填充它(因为您已经使用了循环)。

solution = [np.unique(row) for row in np.unique(demo.T, axis=1)]

result = np.full((len(solution), max(map(len, solution))), np.nan)
for i,arr in enumerate(solution):
result[i][:len(arr)] = arr

关于python - 二维 numpy 数组列中的唯一条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67257017/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com