本博客分为三部分,一是字典和函数结合,代替if-else判断语句;二是数组的元素带有括号;三是完整代码。图片略多。

1. 字典和函数结合,代替if-else判断语句

  写函数时经常会遇到一个函数的某个参数有多个值可供选择的情况,并且每个可选值恰对应了一个子函数,这时需要用到if-else等判断语句来进行判断。其实也可以利用字典,字典的键为参数的可选值,字典的值为对应的子函数。举个例子:

  这是一小段支持向量机的核函数选择代码,用的是if-else来选择核函数,可选的核函数有三种:线性核函数、多项式核函数、高斯径向基核函数。

import numpy as np
# if-else 写法
def myfun_if(x,y,mode='linear'):
if mode=='linear':
return np.dot(x,y) # 线性核函数
elif mode=='polynomial':
return (1+np.dot(x,y))**2 # 多项式的阶数定为2
elif mode=='radial':
return np.exp(-1*pow(x-y,2).sum()) # 高斯径向基函数的gamma参数定为1 # 字典写法
myfun_dict={'linear':lambda x,y:np.dot(x,y),
'polynomial':lambda x,y:(1+np.dot(x,y))**2,
'radial':np.exp(-1*pow(x-y,2).sum())}

结果对比:

myfun_if(x=np.array([1,2,3]),
y=np.array([-1,-2,-3]),
mode='polynomial')
myfun_dict['polynomial'](x=np.array([1,2,3]),
y=np.array([-1,-2,-3]))

2. 数组的元素带有括号

  先看这样一个数组heros

heros=np.array([('刘备',180,192,214),('关羽',249,180,192),('张飞',250,122,175)],
dtype=[('人物', 'U8'), ('武力', 'f'),('智力', 'f'),('速度','f')])
heros

数组里面的元素虽然带括号,但不是元组,因为可以进行修改:

another=heros.copy()
another
another[0][0]='刘皇叔'
another
heros

但是依然可以拆包

for num,hero in enumerate(heros):
print('序号=',num,' ',
'hero:',hero,sep='')
# print(type(hero))
name,attack,IQ,speed = hero #对hero进行拆包
print(name,'的综合能力是',
np.mean([attack,IQ,speed]),'\n',sep='')

  也可以转为数据框

import pandas as pd
DF=pd.DataFrame(heros)
DF

但是列举(enumerate())的结果不同,结果是将数据框的每一列列举出来:

list(enumerate(DF))

3. 完整代码

# 1.字典和函数结合,代替if-else判断语句
import numpy as np
def myfun_if(x,y,mode='linear'):
if mode=='linear':
return np.dot(x,y)
elif mode=='polynomial':
return (1+np.dot(x,y))**2 # 多项式的阶数定为2
elif mode=='radial':
return np.exp(-1*pow(x-y,2).sum()) #高斯径向基函数的gamma参数定为1 myfun_dict={'linear':lambda x,y:np.dot(x,y),
'polynomial':lambda x,y:(1+np.dot(x,y))**2,
'radial':np.exp(-1*pow(x-y,2).sum())} myfun_if(x=np.array([1,2,3]),
y=np.array([-1,-2,-3]),
mode='polynomial')
myfun_dict['polynomial'](x=np.array([1,2,3]),
y=np.array([-1,-2,-3])) # 2.数组的元素带有括号
heros=np.array([('刘备',180,192,214),
('关羽',249,180,192),
('张飞',250,122,175)],
dtype=[('人物', 'U8'),
('武力', 'f'),
('智力', 'f'),
('速度','f')])
for num,hero in enumerate(heros):
print('序号=',num,' ',
'将领:',hero,sep='')
# print(type(hero))
name,attack,IQ,speed = hero
print(name,'的综合能力是',
np.mean([attack,IQ,speed]),'\n',sep='') DF=pd.DataFrame(heros)
list(enumerate(DF))

python3 小知识的更多相关文章

  1. 蓝牙Bluetooth技术小知识

    蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...

  2. HTML+CSS中的一些小知识

    今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...

  3. iOS APP开发的小知识(分享)

          亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...

  4. Unix系统小知识(转)

    Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...

  5. salesforce 零基础开发入门学习(十)IDE便捷小知识

    在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...

  6. Jquery:小知识;

    Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器   上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...

  7. HTML小知识---Label

    今天知道了一个html小知识: <input type="checkbox" id="chkVersion" />                 ...

  8. Unicode和汉字编码小知识

    Unicode和汉字编码小知识 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的 ...

  9. Java异常的一个小知识

    有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...

  10. 12个你未必知道的CSS小知识

    虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 1.CSS的color属性并非只能用于文本显示 对于CSS ...

随机推荐

  1. 死磕rmi之远程对象

    远程对象 远程对象是啥 继承了UnicastRemoteObject的对象都可称为远程对象 让一个对象继承UnicastRemoteObject的能力,就是把自己发布出去. UnicastRemote ...

  2. lg9018题解

    #include<bits/stdc++.h> using namespace std; #define N 2000010 #define int long long #define m ...

  3. ubutu22.04开启ssh配置

    1.查看ubuntu版本信息 lsb_release -a 2.更新系统 sudo apt update && sudo apt upgrade -y 如果出现Ign:1 ...InR ...

  4. [Unity]利用Mesh绘制简单的可被遮挡,可以探测的攻击指示器

    最近做一个小游戏的Demo,最终的效果是这样的 主要是利用Mesh绘制三角形作为显示,然后使用后处理来制作探灯,注意,性能一般,仅仅适合小游戏 分为3步 1:利用mesh绘制三角形,原理很简单,利用三 ...

  5. linux中用户和用户组的概念

    大家好,我们继续来上linux课程,这节课我们从以下几点来进行讲解: Linux权限的概念: UID相关概念 用户和用户组的关系 用户和账户的区别 Linux是一个多用户多任务的的操作系统,很多时候, ...

  6. reids 启动方法

    ---恢复内容开始--- 在windows环境下启动redis服务,前提是你安装好了,启动如下: 一,进入redis的安装目录下,在地址栏输入"cmd",回车 二,然后会进入cmd ...

  7. 中间件Middleware 使用及相关概念

    中间件是装配再应用管道里处理请求和相应的软件,是使用Use,Map,Run扩展方法配置的请求委托,请求委托可以是类,或者匿名方法.每个中间件可调用下一个中间件,直到终端中间件(不调用下一个中间件的就是 ...

  8. 关于JMeter WebSocket插件:JMeter WebSocket插件-关闭SignalR连接--webSocket Close报错

    在浦发银行的项目中,主机运维连接成功不做任何操作的场景中,用到了webSocket协议,但是脚本运行中出现webSocke Close报错--解决方案:在webSocket Open Connecti ...

  9. MobaXterm汉化版教程

    MobaXterm中文版是一款非常好用的远程连接.远程控制软件,它堪称全能终端神器,支持非常多的远程协议 ,如SSH,Telnet,Rsh,Xdmc,RDP,VNC,FTP,SFTP,串口(Seria ...

  10. Windows 批量测试 ip:port 是否通畅

    使用 telnet + cmd 脚本处理: @echo off start cmd /k "telnet 10.2.3.29 3000" start cmd /k "te ...