Numpy基础教程

来源:互联网 发布:卡盟销售系统源码 编辑:程序博客网 时间:2024/04/28 03:54

Numpy安装

安装教程:http://blog.csdn.net/u013355826/article/details/73692327


Numpy是什么

Numpy是高性能的科学计算和数据分析包。

Numpy的ndarry

ndarry是同构的数据多维容器,也就是说所有的元素的类型一致的。

创建 ndarry

import numpy as np  #导入模块numpy并以np作为别名(必须有!)#创建 ndarrayA = np.array([1,2,3,4]) #创建一维数组B1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) #创建多维数组B2 = np.array([[1,2,3],               [4,5,6],               [7,8,9]])#创建多维数组(另一种格式)C = np.arange(4)   #创建一维数组D1 = np.arange(9).reshape((3,3)) #创建多维数组(注意:数组范围最大是8,不能等于9)D2 = np.arange(2,19,2).reshape((3,3))#注意:从2开始,最大数字是18,间隔是2D3 = np.linspace(1,10,6).reshape((2,3)) #注意和 np.arange区别E1 = np.zeros((2,3)) # 没有特别的指出,numpy数据类型都是基本的flote64.E2 = np.zeros((2,3),dtype = int)F = np.ones((2,3),dtype = int)print('A:\n',A)print('B1:\n',B1)print('B2:\n',B2)print('C:\n',C)print('D1:\n',D1)print('D2:\n' ,D2)print('D3:\n' ,D3)print('E1:\n' ,E1)print('E2:\n' ,E2)print('F:\n' ,F)
输出结果:
=========A: [1 2 3 4]B1: [[1 2 3] [4 5 6] [7 8 9]]B2: [[1 2 3] [4 5 6] [7 8 9]]C: [0 1 2 3]D1: [[0 1 2] [3 4 5] [6 7 8]]D2: [[ 2  4  6] [ 8 10 12] [14 16 18]]D3: [[  1.    2.8   4.6] [  6.4   8.2  10. ]]E1: [[ 0.  0.  0.] [ 0.  0.  0.]]E2: [[0 0 0] [0 0 0]]F: [[1 1 1] [1 1 1]]

Numpy的基本属性

#数据类型A1 = np.array([[1,2,3],               [4,5,6],               [7,8,9]])#创建多维数组(另一种格式)A2 = np.array([[1.0,2,3],  #注意是1.0               [4,5,6],               [7,8,9]])#创建多维数组(另一种格式)#数组的横列数B1 = np.array([1,2,3,4])B2 = np.array([[1,2,3],                 [4,5,6],               [7,8,9]])#创建多维数组(另一种格式)print('A1-TYPE:',A1.dtype) #输出元素的类型print('A2-TYPE:',A2.dtype) #输出元素的类型print('B1-SHAPE:',B1.shape) #输出数组的类型print('B2-SHAPE:',B2.shape) 
输出结果
=========A1-TYPE: int32A2-TYPE: float64B1-SHAPE: (4,)B2-SHAPE: (3, 3)

Numpy基本运算

#基本运算A = np.array([10,20,30,40])B = np.arange(4)print('A-B:  ',A-B)print('10*cos(A):  ',10* np.cos(A))print('判断 b<3:  ',B<3) #小于 3的 true, 否则是falseprint('判断b == 3: ',B==3)#等于3的 true, 否则是false#二维矩阵运算C = np.array([[1,2,3],              [4,5,6]])D = np.arange(10,16).reshape((2,3))E = C*D   #逐个相乘,每个位置的逐个相乘。注意形状一样D1 = np.arange(4,10).reshape((3,2))E1 = C.dot(D1)  #矩阵相乘,满足相乘的条件E2 = np.dot(C,D1)print('E:\n',E)print('E1:\n',E1)print('E2:\n',E1)F1 = np.random.random((2,3))print('F1:\n',F1)print('数组的元素的和: ',np.sum(F1)) #求数组的元素的和print('数组的元素的最小值: ',np.min(F1)) #求数组的元素的最小值print('数组的元素的最小值: ',np.max(F1)) #求数组的元素的最大值#可以求一行/列中的最大值、最小值、所有元素的和。#每一行:axis = 1 ;每一列:axis = 0print('每一行的和: ',np.sum(F1,axis = 1))#每一行的和print('每一列的最小值:',np.min(F1,axis = 0)) #每一列的最小值print(np.max(F1,axis = 1)) #每一行的最大值print('最小元素索引值: ',np.argmin(F1)) #最小值的索引print('最大元素索引值: ',np.argmax(F1))#最大值的索引print('每行最大元素索引值: ',np.argmax(F1,axis = 1))#最小值的索引print('每列最小元素索引值: ',np.argmin(F1,axis = 0))#最小值的索引print('平均值: ',np.mean(F1)) #求平均值,可以单独对行或者列print('每行平均值: ',np.mean(F1, axis = 1))#每行的平均值print('平均值: ',F1.mean())A1 = np.array([10,20,30,40])print('依次累加值:',np.cumsum(A1)) #依次累加值# A1 = [10,20,30,40] 累加和是 [10 ,10+20,10+20+30,10+20+30+40]print('依次相减:',np.diff(A1)) #依次累差# A1 = [10,20,30,40] 累差和是 [10 ,20-10,30-20,40-30]A2 = np.array([[25,4,23],                [5,51,41],                [14,2,19]])print('A2 逐行排序:\n',np.sort(A2))print('A2转置矩阵:',np.transpose(A2))print('A2转置矩阵:',A2.T)print('转化后矩阵:\n',np.clip(A2,5,30))# 所有小于5的数字都等于5,所有大于30数字都等于30
输出结果

========A-B:   [10 19 28 37]10*cos(A):   [-8.39071529  4.08082062  1.5425145  -6.66938062]判断 b<3:   [ True  True  True False]判断b == 3:  [False False False  True]E: [[10 22 36] [52 70 90]]E1: [[ 40  46] [ 94 109]]E2: [[ 40  46] [ 94 109]]F1: [[ 0.57782146  0.81000401  0.39892097] [ 0.30544834  0.44134691  0.99760331]]数组的元素的和:  3.53114500796数组的元素的最小值:  0.305448339444数组的元素的最小值:  0.997603311687每一行的和:  [ 1.78674644  1.74439856]每一列的最小值: [ 0.30544834  0.44134691  0.39892097][ 0.81000401  0.99760331]最小元素索引值:  3最大元素索引值:  5每行最大元素索引值:  [1 2]每列最小元素索引值:  [1 1 0]平均值:  0.588524167994每行平均值:  [ 0.59558215  0.58146619]平均值:  0.588524167994依次累加值: [ 10  30  60 100]依次相减: [10 10 10]A2 逐行排序: [[ 4 23 25] [ 5 41 51] [ 2 14 19]]A2转置矩阵: [[25  5 14] [ 4 51  2] [23 41 19]]A2转置矩阵: [[25  5 14] [ 4 51  2] [23 41 19]]转化后矩阵: [[25  5 23] [ 5 30 30] [14  5 19]]

numpy的索引

import numpy as npA = np.array([1,2,3,4])B = np.arange(12).reshape((3,4))print(A,'\n',B)#索引一维数组print(A[1])#索引二维数组(注意数组范围是从0开始)print(B[0][0]) #输出某一个元素print(B[2])  #输出一行元素print(B[0,:]) #输出一行元素print(B[:,3]) #输出一列元素#循环行输出for row in B:    print(row)#循环列输出(先把矩阵转置,然后在行输出,就是原矩阵的列输出)for column in B.T:    print(column)#循环输出每一个元素(先把矩阵变成一个行矩阵,然后在for循环输出)B = B.flatten();print(B)for row in B:    print(row)

输出结果
[1 2 3 4]  [[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]]20[ 8  9 10 11][0 1 2 3][ 3  7 11][0 1 2 3][4 5 6 7][ 8  9 10 11][0 4 8][1 5 9][ 2  6 10][ 3  7 11][ 0  1  2  3  4  5  6  7  8  9 10 11]01234567891011



























原创粉丝点击