本博客分为三部分,一是字典和函数结合,代替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. WPF标题栏自定义

    1.废话不多说直接上代码 <Window.Resources> <Style x:Key="btnTitleMaxMin" TargetType="Bu ...

  2. aop切面记日志

    package com.netauth.utils.component; import java.lang.annotation.ElementType; import java.lang.annot ...

  3. Linux中使用Makefile来运行QuestaSim

    环境:Win7x64,VMware15.0,centOS7.0,QuestaSim10.7c 假设已经编辑好了一个全加器还有运行这个DUT的testbech,代码如下: 点击查看代码 // filen ...

  4. 网络储存服务ip-san搭建

    简单的介绍一下SAN(存储区域网络存储区域网络和SAN协议,简称SAN),它是一种高速网络实现计算机与存储系统之间的数据传输.常见的分类是FC-SAN和IP-SAN两种.FC-SAN通过光纤通道协议转 ...

  5. Cookie之记录用户上次访问时间

    Cookie之记录用户访问时间 需求: 需求: 1:用户访问服务器(Servlet),判断用户是否是第一次访问,如果是第一次访问,则在页面响应内容为:"您好,欢迎您首次访问"; 2 ...

  6. C++ 中的匿名函数(lambda表达式)

    问题引入 使用std::sort函数对自定义类型排序时,我们需要传入一个比较函数作为参数.该比较函数只需要使用一次,但占有一个全局命名域中的名字,而且非常短,短到不需要名字就知道它的作用.这很浪费命名 ...

  7. Flink 状态后端及RocksDBStateBackend的优势

    MemoryStateBackend(只用于本地开发和调试,不用于生产)和FsStateBackend(如果Flink作业的状态很小或需要很低的延迟,则应该考虑FsStateBackend),这两种都 ...

  8. Oracle查看用户占用的表空间大小

    SELECT owner, tablespace_name, ROUND (SUM (BYTES) / 1024 / 1024, 2) "USED(M)" FROM dba_seg ...

  9. JAVA丑数

    leetcode题目链接 有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数.注意,不是必须有这些素因子,而是必须不包含其他的素因子.例如,前几个数按顺序应该是 1,3,5,7,9,15, ...

  10. Pycharm 2022.2激活码到2023年7月,亲测有效

    33MEHOB8W0-eyJsaWNlbnNlSWQiOiIzM01FSE9COFcwIiwibGljZW5zZWVOYW1lIjoiUG9saXRla25payBNZXJsaW1hdSBNZWxha ...