• AHP更新


    # -*- coding: utf-8 -*-
    from __future__ import division  #加这个保证除法后是小数
    import math
    from numpy import *
    import openpyxl  #onesheet
    import xlrd     #twosheet
     
    
        # 打开文件
    workbook = xlrd.open_workbook(r'1.xlsx')
    # 获取所有sheet
    print workbook.sheet_names() # [u'sheet1', u'sheet2']
    #获取sheet1
    sheet1_name= workbook.sheet_names()[0]
    # 根据sheet索引或者名称获取sheet内容
    sheet1 = workbook.sheet_by_name(sheet1_name)
    #step1:从excel中读取特征矩阵
    a1=mat(zeros((6,6)));
    for i in range(1,7):
        for j in range(1,7):
            print sheet1.cell(i,j).value
            a1[i-1,j-1] = sheet1.cell(i,j).value
    print u'step1脆弱性矩阵为'
    print a1
    
    #获取sheet2
    sheet2_name= workbook.sheet_names()[1]
    # 根据sheet索引或者名称获取sheet内容
    sheet2 = workbook.sheet_by_name(sheet2_name)
    lf = sheet2.row_values(1) # 获取第2行内容
    print 'fi'
    print lf
    
    
    
    #step2:每行相、*
    print u'step2计算各个指标权重'
    lm = []
    for i in range(6):
        mul = 1
        for j in range(6):
            mul *= a1[i,j]
        lm.append(mul)
    # print '1:每行的每个元素相乘'
    # print lm
    
    #step3:开方
    l1 =[]
    sum = 0
    for i in range(6):
        temp = lm[i] ** (1/6)   #输出第i行的数据
        l1.append(temp)
        sum += temp
    # print u'2:开方'
    # print l1
    
    #第四部归一化 
    l2 = []
    for i in range(6):
        l2.append(l1[i]/sum)
    # print '归一化后得到每个指标的权重为'
    # print l2
    
    
    # step6、计算脆弱性(威胁)的总体得分:R=∑_(i=1)^n▒〖x_i*f〗i
    
    RV = 0
    print u'指标权重'+'    '+u'指标频数等级'
    for i in range(6):
        print l2[i],lf[i]
        RV += l2[i]*lf[i]
    # print u"中文" 只要在中文前面加上个小u标记,后面的中文就用 unicode 存储了。
    print u'step:3计算脆弱性(威胁)的总体得分Rv'
    print RV

    更新版本

    读取excel含有多个sheet,链接

    https://blog.csdn.net/u013314786/article/details/60874019

    # -*- coding: utf-8 -*-from __future__ import division  #加这个保证除法后是小数import mathfrom numpy import *import openpyxl  #onesheetimport xlrd     #twosheet def onesheet():    # 打开excel文件,获取工作簿对象    wb = openpyxl.load_workbook('1.xlsx')    # 从表单中获取单元格的内容    ws = wb.active  # 当前活跃的表单
        #step1:从excel中读取特征矩阵    a1=mat(zeros((6,6)));    for i in range(2,8):        for j in range(2,8):            a1[i-2,j-2] = ws.cell(row=i,column=j).value
    # def twosheet():    # 打开文件workbook = xlrd.open_workbook(r'1.xlsx')# 获取所有sheetprint workbook.sheet_names() # [u'sheet1', u'sheet2']#获取sheet1sheet1_name= workbook.sheet_names()[0]# 根据sheet索引或者名称获取sheet内容sheet1 = workbook.sheet_by_name(sheet1_name)#step1:从excel中读取特征矩阵a1=mat(zeros((6,6)));for i in range(1,7):    for j in range(1,7):        print sheet1.cell(i,j).value        a1[i-1,j-1] = sheet1.cell(i,j).valueprint u'step1脆弱性矩阵为'print a1
    #获取sheet2sheet2_name= workbook.sheet_names()[1]# 根据sheet索引或者名称获取sheet内容sheet2 = workbook.sheet_by_name(sheet2_name)lf = sheet2.row_values(1) # 获取第2行内容print 'fi'print lf


    #step2:每行相、*print u'step2计算各个指标权重'lm = []for i in range(6):    mul = 1    for j in range(6):        mul *= a1[i,j]    lm.append(mul)# print '1:每行的每个元素相乘'# print lm
    #step3:开方l1 =[]sum = 0for i in range(6):    temp = lm[i] ** (1/6)   #输出第i行的数据    l1.append(temp)    sum += temp# print u'2:开方'# print l1
    #第四部归一化 l2 = []for i in range(6):    l2.append(l1[i]/sum)# print '归一化后得到每个指标的权重为'# print l2

    # step6、计算脆弱性(威胁)的总体得分:R=∑_(i=1)^n▒〖x_i*f〗i
    RV = 0print u'指标权重'+'    '+u'指标频数等级'for i in range(6):    print l2[i],lf[i]    RV += l2[i]*lf[i]# print u"中文" 只要在中文前面加上个小u标记,后面的中文就用 unicode 存储了。print u'step:3计算脆弱性(威胁)的总体得分Rv'print RV

  • 相关阅读:
    xiaopiu产品原型设计与团队实时协作平台
    asp.net webform过滤器(注意我们可以在拦截请求的同时设置回调函数)
    wdScrollTab
    pageoffice实现网页打开编辑保存word文档(基于SSM框架)
    ESB企业服务总线
    JRebel for IntelliJ
    dtcms 手机浏览
    maven仓库添加jar架包
    shell脚本实现FTP自动上传文件
    mysql创建数据库指定字符集
  • 原文地址:https://www.cnblogs.com/lovely7/p/11383114.html
Copyright © 2020-2023  润新知