博主在用python的时候遇到的一些函数,就随笔记录下来了,以便日后查阅方便。
当然这篇博客是在不断更新的,因为遇到的东西也特别多嘛,嘿嘿。
numpy.meshgrid
从坐标向量返回坐标矩阵。
在给定一维坐标阵列x1、x2、…、xn的情况下,在N-D网格上对N-D标量/向量场进行向量化计算,生成N-D坐标阵列。
>>> nx, ny = (3, 2)
>>> x = np.linspace(0, 1, nx)
>>> y = np.linspace(0, 1, ny)
>>> xv, yv = np.meshgrid(x, y)
>>> xv
array([[0. , 0.5, 1. ],
[0. , 0.5, 1. ]])
>>> yv
array([[0., 0., 0.],
[1., 1., 1.]])
>>> xv, yv = np.meshgrid(x, y, sparse=True) # make sparse output arrays
>>> xv
array([[0. , 0.5, 1. ]])
>>> yv
array([[0.],
[1.]])
ravel()、flatten()、squeeze(),reshape()
numpy中的ravel()、flatten()、squeeze()都有将多维数组转换为一维数组的功能,区别:
ravel():如果没有必要,不会产生源数据的副本
flatten():返回源数据的副本
squeeze():只能对维数为1的维度降维
>>>x = np.array([[1, 2, 3], [4, 5, 6]])
>>>x.ravel()
array([1, 2, 3, 4, 5, 6])
>>>x.flatten()
array([1, 2, 3, 4, 5, 6])
>>>a=np.array([[ 1],[2],[3]])
>>>a.squeeze( )
array([1, 2, 3])
>>>x.reshape(2,3)
array([[1, 2, 3],
[4, 5, 6]])
>>>x.reshape(2,-1)#-1可根据前面行数自动计算
array([[1, 2, 3],
[4, 5, 6]])
np.ma.masked_where
对满足条件的数组进行掩码。
当条件为真时,以数组形式返回a。条件的任何屏蔽值也会在输出中屏蔽。
>>> import numpy.ma as ma
>>> a = np.arange(4)
>>> a
array([0, 1, 2, 3])
>>> ma.masked_where(a <= 1, a)
masked_array(data=[--, --, 2, 3],
mask=[ True, True, True, False],
fill_value=999999)
>>> c = ma.masked_where(a <= 2, a)
>>> c
masked_array(data=[--, --, --, 3],
mask=[ True, True, True, False],
fill_value=999999)
>>> c[0] = 99
>>> c
masked_array(data=[99, --, --, 3],
mask=[False, True, True, False],
fill_value=999999)
>>> a
array([0, 1, 2, 3])
>>> c = ma.masked_where(a <= 2, a, copy=False)#是否复制参数的效果。
>>> c[0] = 99
>>> c
masked_array(data=[99, --, --, 3],
mask=[False, True, True, False],
fill_value=999999)
>>> a
array([99, 1, 2, 3])
>>>d=[1,2,2,1]
>>>ma.masked_where(c==3,d)
masked_array(data=[99, --, --, --],
mask=[False, True, True,True],
fill_value=999999)
astype 转换数据类型
>>>a=np.array([True,False,1.36,5.68,9.99])
>>>a.astype(np.int32)
array([1, 0, 1, 5, 9])
np.cumsum()
>>>a=np.array([np.arange(5),np.arange(0,-5,-1),[1,1,1,1,1]])
>>>a
array([[ 0, 1, 2, 3, 4],
[ 0, -1, -2, -3, -4],
[ 1, 1, 1, 1, 1]])
>>>np.cumsum(a)#0,0+1,0+1+2,0+1+2+3,****
array([ 0, 1, 3, 6, 10, 10, 9, 7, 4, 0, 1, 2, 3, 4, 5],
dtype=int32)
>>>np.cumsum(a,axis=1)
array([[ 0, 1, 3, 6, 10],
[ 0, -1, -3, -6, -10],
[ 1, 2, 3, 4, 5]], dtype=int32)
>>>np.cumsum(a,axis=0)
array([[0, 1, 2, 3, 4],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1]], dtype=int32)
np.argmax() 返回数组中
import numpy as np
a = np.array([[1, 5, 5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]])
b=np.argmax(a, axis=0)#对二维矩阵来讲a[0][1]会有两个索引方向,第一个方向为a[0],默认按列方向搜索最大值
print(b)#[1 2 2 1] 这是返回的索引值
c=np.argmax(a, axis=1)#现在按照a[0][1]中的a[1]方向,即行方向搜索最大值,
print(c)#[1 0 2]
assert()函数的作用
断言函数是对表达式布尔值的判断,要求表达式计算值必须为真。可用于自动调试。如果表达式为假,触发异常;如果表达式为真,不执行任何操作。
assert(6 == 6)
assert(5 > 1)
a = "hello"
b = "hello"
assert(a == b)
assert()中表达式都为真,故程序正常执行,不会报错,也不会有输出
当我们的数组是list类型的时候,可直接进行比较。如下我们使用assert(a==b)判断a,b是否相等,可以顺利通过
a = [0, 1, 2, 3, 4]
b = [0, 1, 2, 3, 4]
assert(a == b)
a,b为numpy.array类型时,需要采用下列方式:
import numpy as np
a = np.arange(10)
b = np.arange(10)
assert(a.all() == b.all())
enumerate()使用
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
list1 = ["博主", "是", "一个", "帅哥"]
for i in range (len(list1)):
print (i ,list1[i])
0 博主
1 是
2 一个
3 帅哥
list1 = ["博主", "是", "一个", "帅哥"]
for i,w in enumerate(list1,2):#后面的2用于指定索引起始值,不写默认是0
print (i ,w)
2 博主
3 是
4 一个
5 帅哥