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

如何用Pandas结合np.dot为12个np.array生成12×12矩阵?

解决方法

1. 用np.dot生成点积矩阵

df.corr()的method参数可以直接传np.dot——因为np.dot对两个一维数组计算的就是你要的点积结果,完全符合method要求的「接收两个一维数组返回浮点数」的规则。只要把原来的corr = df.corr()改成:

corr = df.corr(method=np.dot)

生成的矩阵里,每个元素就是对应两列数组的点积,比如d_normal和d_redraw的交点就是你测试的11.68。

2. 强制显示完整12×12矩阵

Pandas默认会截断过多的列/行,只要设置几个显示选项就能让矩阵完整展示:
在代码开头加上这几行:

# 显示所有列、行,避免截断
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
# 加宽显示宽度,防止内容换行挤在一起
pd.set_option('display.width', 1000)

修改后的完整代码

import numpy as np
import pandas as pd

# 设置Pandas显示选项,强制完整显示矩阵
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', 1000)

d_normal = ['1.00', '1.00', '0.90', '0.60', '0.00', '1.00', '0.00', '0.10', '0.40', '0.70', '1.00', '0.00', '0.00',
            '0.00', '1.00', '1.00', '0.00', '0.10', '0.40', '0.70', '1.00', '1.00', '0.90', '0.60', '0.00']
d_redraw = ['1.00', '1.00', '0.90', '0.60', '0.00', '1.00', '1.00', '0.20', '0.40', '0.70', '1.00', '1.00', '0.10',
            '0.00', '1.00', '1.00', '1.00', '0.20', '0.40', '0.70', '1.00', '1.00', '0.90', '0.60', '0.00']
d_noise = ['0.80', '0.80', '0.70', '0.40', '0.00', '0.80', '0.80', '0.00', '0.20', '0.50', '0.80', '0.80', '0.00',
           '0.00', '0.80', '0.80', '0.80', '0.00', '0.20', '0.50', '0.80', '0.80', '0.70', '0.40', '0.00']
d_noise_blur = ['0.96', '0.96', '0.84', '0.48', '0.00', '0.96', '0.96', '0.00', '0.24', '0.60', '0.96', '0.96', '0.00',
                '0.00', '0.96', '0.96', '0.96', '0.00', '0.24', '0.60', '0.96', '0.96', '0.84', '0.48', '0.00']
n_normal = ['1.00', '0.00', '0.00', '0.00', '1.00', '1.00', '1.00', '0.00', '0.00', '1.00', '1.00', '0.00', '1.00',
            '0.00', '1.00', '1.00', '0.00', '0.00', '1.00', '1.00', '1.00', '0.00', '0.00', '0.00', '1.00']
n_redraw = ['1.00', '0.70', '0.00', '0.00', '1.00', '1.00', '1.00', '0.70', '0.00', '1.00', '1.00', '0.70', '1.00',
            '0.70', '1.00', '1.00', '0.00', '0.70', '1.00', '1.00', '1.00', '0.00', '0.00', '0.70', '1.00']
n_noise = ['0.80', '0.50', '0.00', '0.00', '0.80', '0.80', '0.80', '0.50', '0.00', '0.80', '0.80', '0.50', '0.80',
           '0.50', '0.80', '0.80', '0.00', '0.50', '0.80', '0.80', '0.80', '0.00', '0.00', '0.50', '0.80']
n_noise_blur = ['0.96', '0.60', '0.00', '0.00', '0.96', '0.96', '0.96', '0.60', '0.00', '0.96', '0.96', '0.60', '0.96',
                '0.60', '0.96', '0.96', '0.00', '0.60', '0.96', '0.96', '0.96', '0.00', '0.00', '0.60', '0.96']
w_normal = ['1.00', '0.00', '1.00', '0.00', '1.00', '1.00', '0.00', '1.00', '0.00', '1.00', '0.80', '0.20', '0.80',
            '0.20', '0.80', '0.60', '0.40', '0.60', '0.40', '0.60', '0.00', '1.00', '0.00', '1.00', '0.00']
w_redraw = ['1.00', '0.40', '1.00', '0.40', '1.00', '1.00', '0.40', '1.00', '0.40', '1.00', '0.80', '0.40', '1.00',
            '0.40', '0.80', '0.60', '0.60', '0.80', '0.60', '0.60', '0.00', '1.00', '0.00', '1.00', '0.00']
w_noise = ['0.80', '0.20', '0.80', '0.20', '0.80', '0.80', '0.20', '0.80', '0.20', '0.80', '0.60', '0.20', '0.80',
           '0.20', '0.60', '0.40', '0.40', '0.60', '0.40', '0.40', '0.00', '0.80', '0.00', '0.80', '0.00']
w_noise_blur = ['0.96', '0.24', '0.96', '0.24', '0.96', '0.96', '0.24', '0.96', '0.24', '0.96', '0.72', '0.24', '0.96',
                '0.24', '0.72', '0.48', '0.48', '0.72', '0.48', '0.48', '0.00', '0.96', '0.00', '0.96', '0.00']

# 转换为numpy数组并整理到字典
arrays = {
    'd_normal': np.array(d_normal, dtype=float),
    'd_redraw': np.array(d_redraw, dtype=float),
    'd_noise': np.array(d_noise, dtype=float),
    'd_noise_blur': np.array(d_noise_blur, dtype=float),
    'n_normal': np.array(n_normal, dtype=float),
    'n_redraw': np.array(n_redraw, dtype=float),
    'n_noise': np.array(n_noise, dtype=float),
    'n_noise_blur': np.array(n_noise_blur, dtype=float),
    'w_normal': np.array(w_normal, dtype=float),
    'w_redraw': np.array(w_redraw, dtype=float),
    'w_noise': np.array(w_noise, dtype=float),
    'w_noise_blur': np.array(w_noise_blur, dtype=float)
}

def correlation_matrix():
    # 测试点积结果
    print(np.dot(arrays['d_normal'], arrays['d_redraw']))
    df = pd.DataFrame(arrays)
    # 使用np.dot计算点积矩阵
    corr = df.corr(method=np.dot)
    print(corr)

correlation_matrix()

小优化:简化数组管理

把所有数组放到字典里统一转换和管理,比逐个定义变量更简洁,后续要加/改数组也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:45:27