Python学习之numpy(二)

第二部分的学习代码如下:

'''数组的计算部分'''
import numpy as np
import random

'''reshape(),不改值,而改变数组的形状'''
a=np.arange(10).reshape(2,5)
print(a)
b=a.reshape(10)
print(b)
c=a.flatten()     #不清楚对方是什么矩阵,直接转为1维
print()

'''a+x     是每个元素都加x,x是数字
   a-x
   a*x
   a/x
   
   两个数组之间进行计算的时候:
   1)形状一样的数组对应的位置进行计算
   2)一维和多维的数组之间是可以进行计算的,只要他们在某一维度上是一样的
   
'''
print(a+2)
print(a/2)
print('-'*30)
b=np.random.randn(2,5)
print(b)
print('-'*30)
print(a+b)
print('-'*30)
c=np.ones(5)
print(a+c)
'''
[[ 1.  2.  3.  4.  5.]      这是上面计算的结果,可见二维数组的每个维度都加了这个一维数组的数值
 [ 6.  7.  8.  9. 10.]]
'''
print('-'*30)
d=np.ones(5)*2               #验证一下是不是对应的位置相乘
print(a*d)

'''
广播原则:
形状相同:对应位置做相应的计算
形状不同时  以a-b为例
比如a  是2*5 的数组    b是1*5  的数组
则a的每一行都减去   b

比如a  是2*5 的数组    b是2*1  的数组
则a的每一列都减去   b
'''

'''基础索引(取一个值)与切片(拿一段值)'''
#一维数组的索引与列表一样
a=np.array(range(0,10))
print(a[3])                  #元素的索引
print(a[1:4])                #元素的切片
a=np.array(range(10)).reshape(2,5)
print(a)
print(a[1,3])                  #行索引值,列索引值
print(a[0:1,2:4])


'''布尔索引'''
#一维数组
a=np.array(range(10))
print(a)
c=a>5
print(c)       #c里面存放的是布尔值
print(a[c])
#d=[0,1,1,1,1,1,1,0,0,0]
#print(a[d])

#实例把一个一维数组进行0 1化处理
print(a)
a[a<=5]=0
a[a>5]=1
print(a)

#进行一个自增量操作,将大于5的都加上520
a=np.array(range(10))
a[a>5]+=520
print(a)


#二维数组
a=np.array(range(20)).reshape(4,5)
b=a>10
print(a[b])
print("_"*30)
#实例:把第三列大于5的行筛选出来并赋值为520
a=np.array(range(20)).reshape(4,5)
print(a)
print(a[:,3])
b=a[:,3]>5
a[:,3][b]=520
print(a)



'''神奇索引:使用整数数组进行索引'''

a=np.array(range(20))
print(a[[2,3,4]])      #一维数组代表的是下标

print("_"*30)
a=np.array(range(20)).reshape(4,5)
print(a[[1,2]])         #返回的是1行,2行
print(a[[1,2],[1,2]])   #前面一个数组代表的是多少行,后面的一个数组代表的是多少列


a=np.arange(10)
b=np.array([[0,2],[1,3]])    #索引
print(a)
print(b)
print(a[b])


#获取数组中最大的前n个整数
a=np.random.randint(1,100,10)
print(a)
b=a.argsort()      #返回的是排序后的下标,从小到大
c=b[-3:]
print(a[c])


你可能感兴趣的:(Python学习之numpy(二))