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

转载于:https://www.cnblogs.com/lovely7/p/11383114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值