python numpy 的一些学习总结

python numpy 的一些学习总结

来源于:
http://nbviewer.jupyter.org/gist/manujeevanprakash/7e47301f0b50a98232ca


创建数组
np.array(list)
dim #维度
shape #形状
dtype #数据类型


创建1维数组里面全是0
np.zeros(x)
创建多维数组里面全是0
np.zeros((x, y))
创建1维数组从0~x-1
np.arange(15)
返回单位矩阵的数组
np.eye(x)


数组的运算:
A*B 数组里的元素按位置一一对应相乘
A-B数组里的元素按位置一一对应相减
…..


定位元素:
arr[5]:选取下标为5的元素即第六位元素
arr[4:9]:选取下标4~8的元素即第5~9位元素,左开右闭
arr[:]:全选
arr[1] = 123456:更改取值


多维array的元素的定位:
matrix_arr[0][2]或matrix_arr[0,2]:第一行的第三列
arr[0, 1, 2]:第一层的第二行的第三列


赋值:
copied_values = three_d_arr[0].copy()
three_d_arr[0] = 99
three_d_arr[0] = copied_values


切片:
matrix_arr_1[:2] 切割前面两行
matrix_arr_1[:1,1:] 切割第一行的后两列
matrix_arr_1[1,:2] 切割第二行的前两列
matrix_arr_1[:,2:] 返回所有行后第三列
matrix_arr_1[[0,2]] 返回第一和第三行


通过布尔值返回指定的元素
personals = np.array([‘Manu’, ‘Jeevan’, ‘Prakash’, ‘Manu’, ‘Prakash’, ‘Jeevan’, ‘Prakash’])
random_no = random.randn(7, 4)
random_no_1 = random_no[personals == ‘Manu’] #切割第一和第四行;第一第四行返回TRUE
random_no_2 = random_no[personals == ‘Manu’, 2:] #切割第一和第四行的第三四列
print(personals != ‘Manu’) #除了第三四行
random_no_4 = random_no[(personals == ‘Manu’) | (personals == ‘Jeevan’)] #切割第1246行


综合操作

  1. algebra = random.randn(7, 4) #生成一个7行4列的随机数组
    for j in range(7):
    algebra[j] = j #分别对1-7行赋值0-6

algebra[[4, 5, 1]] #选取5 6 2行

  1. fancy = np.arange(36).reshape(9, 4) #生成9行4列36元素从0~35的数组
    fancy_1=fancy[[4, 3, 2, 1],[3, 2, 2, 2]] #列表截取指定元素重新组成一个数组
    fancy_2=fancy[[1, 4, 8, 2]][:, [0, 3, 1, 2]] #列表截取指定行,重新安排列的位置
    fancy_3=fancy[[1, 4, 8, 2]] #列表截取指定行
    fancy_4=fancy[np.ix_([1,4,8,2],[0,3,1,2])] #用np.ix function截取指定行,重新安排列的位置

数组的矩阵操作
transpose = np.arange(12).reshape(3, 4)
transpose.T #转置
y.dot(x) #两矩阵相乘
np.dot(y, x) #两矩阵相乘
from numpy.linalg import inv,qr
x.T.dot(x) #乘自己的转置矩阵
inv(x) #逆矩阵
q, r = qr(sp) #QR奇异值分解


函数功能:
np.sqrt() #对数组内每个元素开平方根
np.exp() #对数组内每个元素返回以e为底的对数
np.maximum(x, y) #返回两数组中对应位置元素的最大值组成一个新的数组
np.modf() # 将数组各元素的小数和整数部分以两个独立数组形式返回
np.abs() #绝对值


Data processing using Arrays


  1. mtrices = np.arange(-5, 5, 1)
    x, y = np.meshgrid(mtrices, mtrices) #x对-5~4按行重复,y对-5~4按列重复

  2. x1 = np.array([1, 2, 3, 4, 5])
    y1 = np.array([6, 7, 8, 9, 10])
    cond = [True, False, True, True, False]
    z1 = [(x, y, z) for x, y, z in zip(x1, y1, cond)] #结合
    np.where(cond, x1, y1) #True返回第一个,false返回第二个
    np.where(判断, True返回的内容, False返回的内容)

统计类
x.mean()
或者
np.mean(x) #求平均
x.sum() #求和
np.sum(x, axis=0) #多维数组列求和
x.sum(0)#多维数组列求和
np.sum(x, axis=1) #多维数组行求和
x.sum(1)#多维数组行求和
x.cumsum(0) #多维数组按列累加求和
x.cumsum(0) #多维数组按行累加求和
(xp > 0).sum() #对大于0的数求和

x = np.array([True, False, True, False, True, False])
x.any() #判断是否有True
x.all() #判断是否全为false

tp.sort() #多维数组,0按列排序,1按行排序
np.unique(x) #筛选重复值
set(x) #筛选重复值
np.in1d(x,[‘Manu’]) #判断对应位置是否有该元素

np.ones(10, dtype=np.int) #dtype规定字符类型

你可能感兴趣的:(python numpy 的一些学习总结)