gpt4 book ai didi

python - 如何对numpy数组的每两列执行操作?

转载 作者:太空宇宙 更新时间:2023-11-03 19:21:50 24 4
gpt4 key购买 nike

现在我有一个由 01 组成的 NumPy 数组,我想执行 logic_and列。实现此目的的 for 循环如下所示:

import numpy as np
result = []
data = [[0, 1, 1],
[1, 0, 1],
[1, 0, 1]]
np_data = np.array(data)
num_cols = len(np_data[1,:])
for i in range(0, num_cols):
for j in range(i+1, num_cols):
#Comparing every column with every other column
anded = np.logical_and(np_data[:,i], np_data[:,j])
result.append(anded)
print result

我只是想知道是否有一种NumPy-fied方法可以做到这一点,因为显然for循环不适合在NumPy上操作数组。

最佳答案

你可以这样做,注意结果是你的结果的转置(同样在这种情况下结果是一个二维数组,在你的情况下它是一个一维数组的列表)。

>>> from itertools import combinations
>>> I, J = np.array(list(combinations([0,1,2], 2))).T
>>> result = np.logical_and(np_data[:, I], np_data[:, J])
>>> result
array([[False, False, True],
[False, True, False],
[False, True, False]], dtype=bool)
>>> result.T
array([[False, False, False],
[False, True, True],
[ True, False, False]], dtype=bool)

关于python - 如何对numpy数组的每两列执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451789/

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