You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求数组元素两两相乘的全向量化实现方案(生成指定结构DataFrame)

全向量化实现数组元素两两相乘生成DataFrame

直接用numpy的外积函数或者pandas的广播机制就能完全替代循环,实现全向量化运算,效率更高:

方法一:利用numpy外积(最简洁)

import pandas as pd
import numpy as np

data = {'values': [0.7, 0.1, 0.5, 0.7]}
df = pd.DataFrame.from_dict(data)

# 直接计算外积,生成两两乘积的二维数组,再转成DataFrame
products = pd.DataFrame(np.outer(df['values'], df['values']))

np.outer(arr1, arr2)会直接生成一个二维数组,其中第i行第j列的元素就是arr1[i] * arr2[j],完全匹配你需要的结构:第一列是a1a1、a1a2...,第二列是a2a1、a2a2...。

方法二:利用pandas广播机制

import pandas as pd
import numpy as np

data = {'values': [0.7, 0.1, 0.5, 0.7]}
df = pd.DataFrame.from_dict(data)

# 将一维数组转为列向量,和原数组广播相乘
values = df['values'].to_numpy()
products = pd.DataFrame(values[:, np.newaxis] * values)

这里values[:, np.newaxis]把原一维数组转成形状为(4,1)的列向量,和原一维数组(形状(4,))相乘时,pandas/numpy会自动触发广播机制,将两个数组扩展为(4,4)的二维数组后逐元素相乘,得到的结果和循环实现完全一致,但全程无循环。

这两种方法都属于全向量化运算,避免了Python层面的循环,在数据量较大时性能优势会非常明显。

内容的提问来源于stack exchange,提问作者user20501139

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:22:20