python笔记

Numpy

切片

选择均匀间隔的元素/选择奇数偶数列

x = numpy.array([[ 1,  2,  3,  4,  5],
[ 6,  7,  8,  9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[6,  7,  8,  9, 10]])
#间隔三行取行数组
a=x[::4]
#a= [[1	2 3	4 5]
# [6 7 8 9 10]]


#间隔三列取列数组
b=a[:,::4]
# b = [[1	5]
#      [6	10]]

忽略0

a = numpy.array([0,1,2,0,2,3,4])
b = a[numpy.nonzero(a)]

where & mask

mask = np.where( (array_xya[:,1]> array_xya[:,1].max()-200 ) & (array_xya[:,0]>0.6) )
array = array_xya[mask]
#数组长度:array.shape[0]

np.array_split()与np.split()

np.array_split()可以进行不均等的划分,而np.split()只能进行均等划分。

import numpy as np
x = np.arange(8.0)

print np.array_split(x,3)
#输出:不均等划分结果
    [array([ 0.,  1.,  2.]), array([ 3.,  4.,  5.]), array([ 6.,  7.])]
print np.split(x,3)
#报错:一旦不均等就会报错
    'array split does not result in an equal division')
    ValueError: array split does not result in an equal division

求导,曲率计算

dx= np.gradient(x)
dy = np.gradient(y)
d2x = np.gradient(dx)
d2y = np.gradient(dy)
curvature = (np.abs(dx * d2y - d2x * dy) / (dx * dx + dy * dy)**1.5)*1000

文件读取

rasterio

import rasterio
Raster= "C:\\Users\\a\\Downloads\\2015.tif"	#多波段tif
with rasterio.open(Raster) as src:
     array = src.read()
array1 = array[0,::]	#第一个波段

读取文件夹下的子文件夹里的文件

import os
def get_filelist(dir):
    Filelist = []
    for home, dirs, files in os.walk(input_folder):
        for filename in files:
            # 文件名列表,包含完整路径
            Filelist.append(os.path.join(home, filename))
            # # 文件名列表,只包含文件名
            # Filelist.append( filename)
    return Filelist

if __name__ == "__main__": 
    input_folder = '....'
    file_list = get_filelist(input_folder)

平滑+拟合

loess平滑

f =0.35
yest = lowess_ag(x, y, f=f, iter=4)#拟合的y值

高斯拟合

H, A, x0, sigma = gauss_fit(x, y) #拟合的公式
# GaussLine = sigma*2.58+x0   
GaussLine = sigma*1.96+x0

Matplotlib

matplotlib图库

plt.scatter(array[:,1],array[:,0],color='red', marker='.',label='original values')
if line!=-9999:
    plt.plot([line,line],[0,0.8],color = 'blue')
plt.xlabel('dem')
plt.ylabel('ndvi')
plt.title('line')
plt.legend(loc=3) 
plt.show()    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Prophet.Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值