二:Numpy数组的形状与重塑&&三:Numpy数组的索引与切片(一维,二维,三维)&&四:Numpy数组的堆叠和级联&&五:Numpy数组广播&&六:用Numpy数组计算

二:Numpy数组的形状与重塑

下面展示一些 内联代码片

// A code block
var foo = 'bar';
// An highlighted block
2.1 查看NumPy数组的维度 array.ndim
input:a = np.array([[5,10,15],[20,25,20]])
	  print('Array :','\n',a)
	  print('Dimensions :',a.ndim)
output:Array : 
	 [[ 5 10 15] 
	  [20 25 20]]
	  Dimensions : 2
2.2 查看NumPy数组的形状 ndarray.shape,ndayyary.shape[0],ndayyary.shape[0]
input:a = np.array([[1,2,3],[4,5,6]])
	  print('Array :','\n',a)
	  print('Shape :',a.shape)
	  print('Rows = ',a.shape[0])
	  print('Columns = ',a.shape[1])
output:Array : 
	  [[1 2 3] 
	  [4 5 6]]
	  Shape : (2, 3)
	  Rows =  2
	  Columns =  3
2.3 重塑Numpy数组的维度(1-多维,多维-多维,多维-1) np.reshape()
#1-多维(手动设置形状)
input:a = np.array([3,6,9,12])
	  np.reshape(a,(2,2))
output:[[3  6] 
        [9 12]]
#1-多维(自动计算形状),numpy看到-1时会自动计算形状,行和列只有一个可以为-1,另一个需要指定
input:a = np.array([3,6,9,12,15,18])
	  print('Three rows :',np.reshape(a,(3,-1)))
	  print('Three columns :',np.reshape(a,(-1,3)))
ouput:Three rows : 
      [[3 6] 
       [9 12] 
       [18 24]]
      Three columns : 
      [[3 6 9] 
       [12 18 24]]
#多维-1(展开Numpy数组)    不改变原数组:flatten()   改变原数组:ravel()
input:a=np.zeros((3,3),dtype=np.int32)
		b=a.flatten()
		c=a.ravel()
		print("a:",a)
		print("b:",b)
		print("c:",c)
		b[0]=1
		print("a1:",a)
		c[0]=1
		print("a2:",a)
output:a: [[0 0 0] 
	              [0 0 0]
	              [0 0 0]]
	   b: [0 0 0 0 0 0 0 0 0]
       c: [0 0 0 0 0 0 0 0 0]
       a1: [[0 0 0]
 	        [0 0 0]
            [0 0 0]]
	   a2: [[1 0 0]
 	        [0 0 0]
 	        [0 0 0]]
#多维-多维 
input:a1=np.ones((4,4),dtype=np.int32)
	  a2=a1.reshape((2,8)) #a2=np.reshape(a1,(2,8))
	  print("a2:",a2)
output:a1: [[1 1 1 1]
			[1 1 1 1]
			[1 1 1 1] 
			[1 1 1 1]]
	   a2: [[1 1 1 1 1 1 1 1] 
	        [1 1 1 1 1 1 1 1]]
2.4 Numpy数组的转置     np.trasnspose(ndarrary) /ndarrary.transpose()
input:a = a = np.array([[1,2,3],
		[4,5,6]])
	  b = a.transpose()
	  print('Original shape and arrary:',a.shape,'\n',a)
	  print(' Original shape and arrary After  transpose:',b.shape,'\n',b)
output:Original shape and arrary: (2, 3) 
	   [[1 2 3]
		[4 5 6]]
 	   Original shape and arrary After transpose: (3, 2) 
 	   [[1 4] 
 	    [2 5] 
 	    [3 6]]
var foo = 'bar';

三:Numpy数组的索引与切片(一维,二维,三维)

// A code block
var foo = 'bar';
// An highlighted block
**3.1 Numpy数组的切片
3.1.1 一维数组的切片**     ndarrary[start:end:step-size]  索引范围:[start,end)
input:a = np.array([1,2,3,4,5,6])
	  print(a[1:5:2])
	  print(a[:6:2])  #未指定start时,start默认为0
	  print(a[1::2])  #未指定end时,end默认为数组大小
 	  print(a[1:6:])   #未指定步长时默认为1
output:[2 4]
	   [1 3 5]
	   [2 4 6]
	   [2 3 4 5 6]
	   
**3.2 二维数组切片
<1>从二维数组中检索元素**
input:a = np.array([[1,2,3],
		[4,5,6]])
	  print(a[0,0]) #等同于print(a[0][0])
	  print(a[0][0])
	  print(a[1,2])
	  print(a[1,0])
output:1
	   1
	   6
       4
       
**<2>二维数组切片**
input:a = np.array([[1,2,3],[4,5,6]])
	  # 打印第一行值
	  print('第一行的值 :',a[0:1,:])
	  # 具有列的步长
	  print('第一行第二列和第一行第三列的值:',a[0:1,::2])
	  print('Second column values :',a[:,1::2])
	  print('Arbitrary values :',a[0:1,1:3])


output:第一行的值: [[1 2 3]]
       第一行第二列和第一行第三列的值: [[1 3]]
	   Second column values : [[2] [5]]
	   Arbitrary values : [[2 3]]
**3.3 三维数组切片**
input:a = np.array([[[1,2],[3,4],[5,6]],# 第一个轴
	  		       [[7,8],[9,10],[11,12]],# 第二个轴
	               [[13,14],[15,16],[17,18]]])# 第三个轴
		  print(a)
output:[ [[1 2] [3 4] [5 6]]
         [[7 8] [9 10] [11 12]]
  		 [[13 14] [15 16] [17 18]]
  	   ]
input:print('First array, first row, first column value :','\n',a[0,0,0])
	  print('First array last column :','\n',a[0,:,1])
	  print('First two rows for second and third arrays   		  :','\n',a[1:,0:2,0:2])

output:First array, first row, first column value : 1
	   First array last column : [2 4 6]
	   First two rows for second and third arrays : [[[7 8] 
                                           	          [9 10]]
 													  [[13 14] 
  	                 								   [15 16]]]
**3.4 Numpy数组的负切片**
input:a = np.array([[1,2,3,4,5],
					[6,7,8,9,10]])
	  print(a[:,-1])	#所有行的最后一个数

output:[5 10]

input:print(a[-1::-1,-1::-2])    #倒数第一行--第一行 步长:-1  倒数第一列-第一列 步长:-2     

output:[[10 8 6] 				#第二行-第一行&&(第五列,第三列,第一列) 
 		[5 3 1]]
#利用负切片反转数组  ndarrary.[::-1,::-1]
input:print(a[::-1,::-1])
output:[[10 9 8 7 6] 
		[5 4 3 2 1]]
#flip(ndarrary,axis=0/1)方法反转数组,axis=0时列反转,axis=1时行反转
input:print("a数组 行 反转:",np.flip(a,axis=1))
	  print("a数组 列 反转:",np.flip(a,axis=0))		
output:a数组 行 反转:[[5 4 3 2 1] 
	    			  [10 9 8 7 6]]
       a数组 列 反转:[[6 7 8 9 10] 
	    			  [1 2 3 4 5]]
**四:Numpy数组的堆叠和级联(数组的拼接)**	
**4.1堆叠Numpy数组**     垂直堆叠:vstack(a,b),即沿行堆叠     水平堆叠:hstack(a,b),即沿列堆叠 按深度堆叠:dstack((a,b))           注:使用vstack和hstack方法时 a,b两个numpy数组必须有完全相同的轴
input:a = np.arange(1,6)
	  b = np.arange(6,11)
	  print('a:','\n',a)
	  print('b:','\n',b)
	  print('垂直堆叠,即沿行堆叠:',np.vstack((a,b)))
	  print('水平堆叠,即沿列堆叠:',np.hstack((a,b)))
	  a1=[[1,2],[3,4]]
	  b1=[[5,6],[7,8,]]
	  print('按深度堆叠:',np.dstack(a1,b1))

output:a:[1 2 3 4 5]
	   b:[6 7 8 9 10]
	   垂直堆叠,即沿行堆叠:[ [1 2 3 4 5] 
	   					    [6 7 8 9 10]
	   					  }
	   水平堆叠,即沿列堆叠:[1 2 3 4 5 6 7 8 9 10]
	   按深度堆叠:[ [[1 5] [2 6]]  
	   			    [[3 7] [4 8]] ]
4.2 级联Numpy数组 concatenate((a,b),axis=0/1)
				 append(a,value,axis=0/1):直接将新元素添加到a数组的末尾
				 注:使用np.append()方法并不会改变原数组的值,而是在副本上进行添加元素 
				 
#np.concatenate((a,b),axis=0/1)	axis=0,按列级联   axis=0,按行级联
input:a = np.arange(1,6).reshape(1,5)
	  b = np.arange(6,11).reshape(1,5)
	  print('a:','\n',a)
	  print('b:','\n',b)
	  print('按列级联:','\n',np.concatenate((a,b),axis=0))
	  print('按行级联:','\n',np.concatenate((a,b),axis=1))
output:a:[[1 2 3 4 5]]
	   b:[[6 7 8 9 10]]
	   按列级联:[ [1 2 3 4 5]
	   			  [6 7 8 9 10]
	   			]
	   按行级联:[ [1 2 3 4 5 6 7 8 9 10] ]   		
	   			 
#np.append()				  
input:c = np.array([[1 2] 
         			[3 4]])
	  c1=np.append(c,[[5,6]], axis=0)
      print('c1:',c1,'\n')
	  print('c:',c)
output:c1: [[1 2] 
 		    [3 4] 
 	        [5 6]] 

	   c: [[1 2]
 	       [3 4]]
**:Numpy数组广播** 
可在形状不同的numpy数组之间或numpy数组与数字之间的运算.广播基本上延伸较小的numpy数组,使得较小的numpy数组与较大的numpy数组保持相同的形状
注:只在两种情况下可以使用广播 1.两个数组形状相同 2.其中一个是1input:a = np.arange(1,11,2)       #[1 3 5 7 9]
	  b = np.array([[2],[2]])
	  print('a+b=:','\n',a+b)
	  print('a*2=:',a*2)
output:a+b:[[3 5 7 9 11]
	    [3 5 7 9 11]]
	   a*2=[2 6 10 14 18]
六:用Numpy数组计算
6.1 Numpy数组的基本运算 加、减、乘、除、求余	 
input:a=np.arange(6,11)
	  print('a=',a)
	  print('a+5=:',a+5)
	  print('a-5=:',a-5)
	  print('a*5=:',a*5)
	  print('a/5=:',a/5)
	  print('a*a=:',a**2)
	  print('a%5=:',a%5)
output:a=[6 7 8 9 10]
	   a-5=[ 1 2 3 4 5]
	   a+5=[ 11 12 13 14 15]
	   a*5=[30 35 40 45 50]
	   a/5=[1.2 1.4 1.6 1.8 2.]
	   a*a=[36 79 64 81 100]
	   a%5=[1 2 3 4 0]
6.2 平均数、中位数、标准差   np.mean()  np.std()  np.median()
input:a = np.arange(1,11,2)
	  print('平均数:',np.mean(a))
	  print('标准差:',np.std(a))
	  print('中位数:',np.median(a))

output:平均数: 5.0
	   标准差: 2.8284271247461903
       中位数: 5.0

	  
   		     	   			 
	   

    			 
 		
  	                 								 
  	   
  	 
	 










var foo = 'bar';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Passion passion

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

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

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

打赏作者

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

抵扣说明:

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

余额充值