python笔记

本文记录学习过程中遇到的python语法知识


python基础语法

range与xrange的区别

range返回一个list,而xrange是返回list生成器。都可以用for遍历

参数传递机制

函数调用时,在参数前面加*或**会自动把参数解析并一个个传给函数
用在tuple元组前面,**用在字典前面
eg.np.random.rand(*matrix2.shape)
本来matrix2.shape是一个tuple,不能作为参数传给函数,但
把tuple中的每个元素解析出来,一个个传给函数就可以了

numpy

np.where(conditions)
np.where(x>5)返回的是坐标,因此x(np.where(x>5))返回筛选过后的x数组

axis
axis=0,以列为单位操作;axis=1,以行为单位操作;若不指定axis一般对所有元素变为一维进行运算

遍历numpy矩阵中的所有元素

it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])

  • 生成对x的迭代器,并赋予读/写权限
  • 通过it.multi_index读取遍历的index,x[it.multi_index]读取元素
  • 通过it.iternext()进入下一个元素的读取阶段

如何选择矩阵中多个不同坐标的数?

arr[横坐标list,纵坐标list]即可,横坐标list与纵坐标list一一对应
eg.

arr=array([[ 0,  1,  2,  3],
       		[ 4,  5,  6,  7],
       		[ 8,  9, 10, 11]])
arr[[1,2],[0,1]]
=>array([4,9])

np.sum()

axis=0,以列为单位相加,axis=1,以行为单位相加

np.argsort()

numpy.argsort(a, axis=-1, kind=’quicksort’, order=None)

对矩阵a按轴进行排序,返回排序后的下标(返回的也是一个np.array)

note:是按从小到大排序,若对向量排序并返回最大的index:np.argsort(arr)[-1]即可

np.argmax()

返回最大的数的索引
bincount与argmax组合技
np.bincount(arr).argmax()
bincount算出arr中每个数出现的次数,该数字作为index,而argmax正好又是返回最大的数的index,组合起来就相当于返回arr中出现次数最多的数

np.bincount()

功能
计算array中每个数字出现的次数
注意
输入必须为非负整数!np.array里也不会出现字符串,全是数字,所以只能计算数字数组中每个元素出现的次数,按从0到最大的数字排列,因此返回数组长度为array中最大的数+1
eg.arr = np.array([2,4])
np.bincount(arr) =>[0,0,1,0,1]2做索引,出现次数为1。4同理,0,1,3都没出现过所以为0

np.linspace()

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的间隔内返回均匀间隔的数字。

np.s_为什么要存在?

解析
np.s_是用来生成index的,比如np.s_[1:5]返回一个index
arr[np.s_[1:5]] == arr[1:5]
这样为什么不直接用arr[1:5]呢?
=> np.s_可以用作参数传递进函数,而不能直接把[1:5]当成参数

eg.np.delete()的第二个参数为要删除的index,也可以传整数向量list,但要传[1:5]就不方便了,用list的话只能[1,2,3,4,5]而np.s_可以直接np.s_[1:5]

数组拼接

  • np.concatenate()拼接多个数组,axis选方向
  • np.vstack()将多个数组在垂直方向拼接,输入可以是list
  • np.hstack()将多个数组在水平方向拼接,输入可以是list
  • np.c_[a,b]按行连接两个矩阵
  • np.r_[a,b]按列连接两个矩阵

乘法 *与np.dot

*是对应元素分别相乘,若其中一个是向量,则是矩阵每行与向量对应元素分别相乘
np.dot是普通的矩阵乘法

广播机制

x是矩阵,v是向量,x+v则是x的每行都与v相加

索引写法

arr[3,4]和arr[3][4]好像都可以

SciPy

基于numpy,主要作用为提供计算和操作数组的函数
img = imread(‘img_name’):读取图像
img.dtype:图像类型
img.shape:图像大小
imresize(‘img_name’,shape):改变图像大小
imsave(‘file_name’,对象):存储图像

  • 引入方法:from scipy.misc import imread, imsave, imresize

函数scipy.io.loadmatscipy.io.savemat能够让你读和写MATLAB文件。

Pandas

to_csv()

参数
sep:分隔符
header:是否保留列明
index:是否保留Index
na_rep:用什么替换空值

选取行和列

选取行
  • 连续多行的选择用类似于python的列表切片
  • 按照指定的索引选择一行或多行,使用loc[]方法
  • 按照指定的位置选择一行多多行,使用iloc[]方法
选取列

file[[列名。。。。]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值