import numpy as np
import random
#1切片和序列一致
arr=np.arange(3,18)
print(arr[2:4])#[3 4],不包含结尾的数字
print(arr[-1])#9
print(arr[::2])#[1 3 5 7 9]
print("*"*10)
brr=arr#两者的id是一样的
print(brr)
brr=arr[:]#对arr做了切片,两者的id不同了
print(brr)
#2.高级切片 布尔类型切片
print(arr>6)#[False False False False False False True True True]
print(arr[arr>6])#[7 8 9] 为true成员保留 为false 删除
print(arr!=9)#取不等于9的
print(arr[arr!=9])#[1 2 3 4 5 6 7 8]
#切片 大于9 小于12
print(arr[(arr>9) & (arr<12)])#[10 11]
#3向量运算
arr=np.array([1,2,3,4,5,6])
brr=np.array([3,4,2,46,2,5])
print(arr+3)#[4 5 6 7 8 9]
print(arr+brr)#[ 4 6 5 50 7 11]
print("&"*100)
#4.Numpy统计方法(轴方向axis : 0,1)(sum,max,min,argmax,mean,cumsum,comprod)
arr=np.arange(1,10).reshape(3,3)
print(arr)
print(arr.sum())#没有设置轴方向,所有成员进行累加
print(arr.sum(axis=1))#axis=1 行相加, axis=0列相加
print(arr.max(axis=0))
print(arr.mean(axis=0))#平均值
print(arr.argmax())#取最大值的位置
print(arr.argmin())
print(arr.cumsum())#累加求和
print(np.cumprod(arr,axis=1))#累加求和
#5.numpy去重,np.unique
arr=np.array([3,4,5,6,5,4,2,4,6,4,2])
print(arr)
print(np.unique(arr))
arr=np.array([2.32,5.35,7.97,6.40])
print(np.ceil(arr))#向上取整
print(np.floor(arr))#向下取整
#numpy.around(a,decimals)
# 1.a 输入数组
# 2. decimals 要舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
print("四舍五入:",np.around(arr,1))#四舍五入: [2.3 5.4 8. 6.4]
print("四舍五入:",np.around(arr,0))#四舍五入: [2. 5. 8. 6.]
print("四舍五入:",np.around(arr,-1))#四舍五入: [ 0. 10. 10. 10.]
# 练习1: 产生1-9随机数,要求3*3二维数组
arr=np.random.randint(1,10,size=(3,3))
print(arr)
# 练习2: 统计每列中大于6的元素个数
print(arr>6)
brr=arr>6
print(brr.sum(axis=0))
print("*"*100)
# 练习3:统计一行中三个值都是大于3的行的个数
arr=np.array([[2,13,11],[22,33,44],[77,88,99]])
print(arr>3)
brr=arr>3
crr=brr.sum(axis=1)
print(crr)
drr=crr==3
print(drr.sum())
#all表示必须都满足时候才返回
brr=arr>3
print(brr)
print(brr.all(axis=1).sum())
#练习4,产生1-9随机数,要求3*3二维数组,每个数组只出现一次
arr=np.arange(1,10)
random.shuffle(arr)#把arr数组随机排列
print(arr)
print(arr.reshape(3,3))