gpt4 book ai didi

python - 在Python中从列表中的每个元素减去自身的有效方法

转载 作者:行者123 更新时间:2023-12-01 02:43:51 24 4
gpt4 key购买 nike

我想从列表中减去每个元素本身并生成一个列表列表。例如:

x = [1,2,3,4,5]

# expect this
x_sub = [[0,1,2,3,4],
[1,0,1,2,3],
[2,1,0,1,2],
[3,2,1,0,1],
[4,3,2,1,0]]

就我而言,该列表有 120,000 名成员,因此需要一些高效的东西。目前这是我的代码,但速度非常慢。

import time
import numpy as np

data = np.random.randint(10, size=100000)
allDiffs= []

start = time.time()
# Iterate over each centroid calculating the costs
for i, x in enumerate(data):

diff = [np.abs(data[i]-a) for a in data]
allDiffs.append(diff)


end = time.time()
print(end-start)

最佳答案

您可以使用numpy.broadcasting来做到这一点:

np.abs(data - data[:,None])

这里发生的是data[:,None]通过添加新轴将数据 reshape 为二维数组,以及data - data[:,None]将广播两次并生成元素的外部减法。

<小时/>
x = np.array([1,2,3,4,5])
np.abs(x - x[:,None])

#array([[0, 1, 2, 3, 4],
# [1, 0, 1, 2, 3],
# [2, 1, 0, 1, 2],
# [3, 2, 1, 0, 1],
# [4, 3, 2, 1, 0]])

关于python - 在Python中从列表中的每个元素减去自身的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45400950/

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