迭代for循环&申请np.union1d

时间:2018-02-20 12:39:32

标签: python

我想通过迭代for循环来做np.union1d。 这是我正在使用的代码:

arr = np.empty((1,), dtype=np.int32)
for i in range(2):
    arr = np.union1d(arr, data[df.iloc[i,7]])

data是一个字典,我想根据我的数据框df的第8列中定义的键来提取值。抱歉,我无法向您提供data&的更多详情。 df因为商业机密。运行此循环后,我看到arr显示空数组,而data[df.iloc[i,7]]为每次迭代生成大约10K大小的数组。你能告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

为了确定,请检查您的代码实际上是不是这样:

for i in range(2):
    arr=np.empty((1,), dtype=np.int32)
    arr=np.union1d(arr, data[df.iloc[i,7]])

如果没有,我将按以下方式进行调试

for i in range(2):
    new_arr = data[df.iloc[i,7]]
    print(type(new_arr))  # check that it's an array
    print(new_arr.shape)  # check that first dim > 1, second dim = 1

一旦你开始工作,我还建议初始化arr = [],因为np.empty通过将一个非常小的值作为占位符来初始化数组,因此它将出现在最终的连接数组中! / p>