首页 / PYTHON / python学习笔记
python学习笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python学习笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7880字,纯文字阅读大概需要12分钟。
内容图文
1、np.array和np.asarray
np.asarray 的定义:
def asarray(a, dtype=None, order=None):
? ? return array(a, dtype, copy=False, order=order)
而 np.array 的定义:
def array(a, dtype=None, order=None):
? ? return array(a, dtype, copy=True, order=order)
简而言之:
主要区别在于 np.array (默认情况下)将会copy该对象,而 np.asarray 除非必要,否则不会copy该对象。
2、np.newaxis
np.newaxis的功能:插入新维度。
栗子1:
a=np.array([1,2,3,4,5])
print(a.shape)
print (a)
输出:
(5,)
[1 2 3 4 5]
栗子2:
a=np.array([1,2,3,4,5])
aa=a[:,np.newaxis]
print(aa.shape)
print (aa)
输出:(5, 1)
[[1]
[2]
[3]
[4]
[5]]
栗子3:
a=np.array([1,2,3,4,5])
aa=a[np.newaxis,:]
print(aa.shape)
print (aa)
输出:
(1, 5)
[[1 2 3 4 5]]
看明白了吧,原来np.newaxis的作用是增加一个维度。
对于[: , np.newaxis] 和 [np.newaxis,:],是在np.newaxis这里增加1维。
这样改变维度的作用往往是将一维的数据转变成一个矩阵,与代码后面的权重矩阵进行相乘, 否则单单的数据是不能呢这样相乘的哦。
3、hasattr() 函数理解
hasattr(object, name)
判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。
需要注意的是name要用括号括起来。
>>> class test():
... name="xiaohua"
... def run(self):
... return "HelloWord"
...
>>> t=test()
>>> hasattr(t, "name") #判断对象有name属性
True
>>> hasattr(t, "run") #判断对象有run方法
True
4、np.transpose
参数:
a:输入数组
axis: int类型的列表,这个参数是可选的。默认情况下,反转的输入数组的维度,当给定这个参数时,按照这个参数所定的值进行数组变换。
返回值 :
p:ndarray 返回转置过后的原数组的视图。
图像通道转换——从np.ndarray的[w, h, c]转为Tensor的[c, w, h]
5、python 中的try finally
try ...finally...结构
我们在执行一长串关联命令时,会有一个问题,如果当中一个命令失败了,整个命令串事实上就没有必要执行了。在异常发生时,我们也需要执行一些收场工作。比如close()方法关闭文件。
在try下全部操作如果某项失败就中止继续执行,并执行finally。如果try全部正确执行,最后也执行finally.
import numpy as np
# Test 1
a = np.arange(4)
print a
# 直接赋值, a,b,c,d是同一个array
b = a
c = a
d = b
a[0] = 10
print b is a
print c is a
print d is a
# Test 1 result
[0 1 2 3]
True
True
True
# Test 2
# 深拷贝
b = a.copy()
b[0] = 12
print b is a
print a
print b
# Test 2 result
False
[10 1 2 3]
[12 1 2 3]
copy.copy()、copy.deepcopy()、np.copy()与python普通的等号的区别
all(x) 是针对x对象的元素而言,如果all(x)参数x对象的所有元素不为0、”、False或者x为空对象,则返回True,否则返回False
如:
In [25]: all(['a', 'b', 'c', 'd']) ?#列表list,元素都不为空或0
Out[25]: True
In [26]: all(['a', 'b', '', 'd']) ?#列表list,存在一个为空的元素
Out[26]: False
In [27]: all([0, 1,2, 3]) ?#列表list,存在一个为0的元素
Out[27]: False
In [28]: all(('a', 'b', 'c', 'd')) ?#元组tuple,元素都不为空或0
Out[28]: True
In [29]: all(('a', 'b', '', 'd')) ?#元组tuple,存在一个为空的元素
Out[29]: False
In [30]: all((0, 1,2, 3)) ?#元组tuple,存在一个为0的元素
Out[30]: False
In [31]: all([]) # 空列表
Out[31]: True
In [32]: ?all(()) # 空元组
Out[32]: True
any(x)是判断x对象是否为空对象,如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true
In [33]: any(['a', 'b', 'c', 'd']) ?#列表list,元素都不为空或0
Out[33]: True
In [34]: any(['a', 'b', '', 'd']) ?#列表list,存在一个为空的元素
Out[34]: True
In [35]: any((0,1)) ?#元组tuple,存在一个为空的元素
Out[35]: True
In [36]: any((0,'')) ?#元组tuple,元素都为空
Out[36]: False
In [37]: ?any(()) # 空元组
Out[37]: False
In [38]: any([]) # 空列表
Out[38]: False
首先比较二者的参数部分:
- np.max:(a, axis=None, out=None, keepdims=False)
- 求序列的最值
- 最少接收一个参数
- axis:默认为列向(也即 axis=0),axis = 1 时为行方向的最值;
- np.maximum:(X, Y, out=None)
- X 与 Y 逐位比较取其大者;
- 最少接收两个参数
该函数输入一个矩阵,返回扁平化后矩阵中非零元素的位置(index)
这是官方文档给出的用法,非常正规,输入一个矩阵,返回了其中非零元素的位置.
>>> x = np.arange(-2, 3)
>>> x
array([-2, -1, 0, 1, 2])
>>> np.flatnonzero(x)
array([0, 1, 3, 4])
import numpy as np
d = np.array([1,2,3,4,4,3,5,3,6])
haa = np.flatnonzero(d == 3)
print (haa)
[2 5 7]
10、[numpy]random.choice()随机选取内容
可以从一个int数字或1维array里随机选取内容,并将选取结果放入n维array中返回。
numpy.random.choice(a, size=None, replace=True, p=None)
参数:
a:1-D数组或int
如果是ndarray,则从其元素生成随机样本。
如果是int,则生成随机样本,就好像a是np.arange(n)
size:int或int的元组,可选
replace:布尔值,可选样品是否有替代品
p:1-D数组,可选
与a中每个条目相关的概率。 如果没有给出,则样本假设在a中的所有条目上均匀分布。
>>> np.random.choice(5, 3)
array([0, 3, 4])
>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])
>>> np.random.choice(5, 3, replace=False)
array([3,1,0])
>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])
>>> aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'],
Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。
random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间。
random.uniform()正好弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限。
random.randint()随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,python random.randint。
random.choice()可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等。
random.shuffle()如果你想将一个序列中的元素,随机打乱的话可以用这个函数方法。
random.sample()可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。
# -*- coding: UTF-8 -*-
import random
print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数
print( random.random() ) # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') ) # 从序列中随机选取一个元素
print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数
a=[1,3,5,6,7] # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)
12、from __future__ import absolute_import/division/print_function
- from __future__ import absolute_import
关于这句from __future__ import absolute_import的作用:
直观地看就是说”加入绝对引入这个新特性”。说到绝对引入,当然就会想到相对引入。那么什么是相对引入呢?比如说,你的包结构是这样的:
pkg/
pkg/init.py
pkg/main.py
pkg/string.py如果你在main.py中写import string,那么在Python 2.4或之前, Python会先查找当前目录下有没有string.py, 若找到了,则引入该模块,然后你在main.py中可以直接用string了。如果你是真的想用同目录下的string.py那就好,但是如果你是想用系统自带的标准string.py呢?那其实没有什么好的简洁的方式可以忽略掉同目录的string.py而引入系统自带的标准string.py。这时候你就需要from __future__ import absolute_import了。这样,你就可以用import string来引入系统的标准string.py, 而用from pkg import string来引入当前目录下的string.py了
1、用import string来引入系统的标准string.py
2、用from pkg import string来引入当前目录下的string.py
- from __future__ import division
导入python未来支持的语言特征division(精确除法),当我们没有在程序中导入该特征时,"/"操作符执行的是截断除法(Truncating Division),当我们导入精确除法之后,"/"执行的是精确除法。
---------------------------------------------------------------------------------------------
>>> 3/4
0
>>> from __future__ import division
>>> 3/4
0.75--------------------------------------------------------------------------------------------
导入精确除法后,若要执行截断除法,可以使用"//"操作符:
--------------------------------------------------------------------------------------------
>>> 3//4
0
- from __future__ import print_function
在开头加上这句之后,即使在python2.X,使用print就得像python3.X那样加括号使用。python2.X中print不需要括号,而在python3.X中则需要。
# python2.7
print "Hello world"
# python3
print("Hello world")
内容总结
以上是互联网集市为您收集整理的python学习笔记全部内容,希望文章能够帮你解决python学习笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。