Numpy的基本使用

数组的创建:

import numpy as np

#一维数组的创建:
arr1 = np.array([1,2,3,4])

#二维数组:
arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])

数组的属性:

print('数组结构:',arr2.shape)
print('数组元素个数:',arr2.size)
print('数组元素类型:',arr2.dtype)
print('数组维度:',arr2.ndim)
print('数组元素大小:',arr2.itemsize)

#重设数组类型:
arr2.shape = 4,3
print('重设shape后的arr2为:', arr2)

numpy中自动生成数组的函数:

# (1)arange(起始值,终止值,步长)
print(np.arange(0,1,0.1))

# (2)生成等差数列:linspace(起始值,终止值,元素个数)
print(np.linspace(0,1,12))

#(3)等比数列:logspace(10^a, 10^b, 元素个数)  
print(np.logspace(0, 1, 20))

#(4)全0数组:
print(np.zeros((2,3)))

#(5)全1数组:
print(np.ones((2,3)))

#(6)单位数组:一定是方阵,
print(np.eye(3))

#(7)对角数组:diag,一定是方阵
print(np.diag([1, 2, 3, 4]))

基于random模块,生成随机数

#(1)0,1之间随机数: np.random.random 
print(np.random.random(100)).reshape(10,10)  #维度

#(2)均匀分布:np.random.rand
print(np.random.rand(10,5))

#(3)正态分布: np.random.randn
print(np.random.randn(10,5))

#(4)随机整数: np.random.randint,注意  2<=x<10
print(np.random.randint(2,10,size=[2,5]))

数组索引

#一维数组索引:类似于列表切片
arr = np.arange(10)
print(arr[2:6])

#二维数组索引:
arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print('索引第1,2行的,第3、4列的元素为:',arr[1:, 3:] )
print(arr[(0,1,2),(1,2,3)])  ##返回 [ 2  6 10]  #必须一一对应
mask = np.array([1,0,1], dtype = np.bool )

print(arr[np.ix_([0,3],[1,2])])  #返回2*2数组

变换数组形态

arr = np.arange(12)
print('新的二维数组为:', arr.reshape(3,4))
arr2 = arr.reshape(3,4)
print('展平后的数组为:', arr2.ravel()) #变成一维
print('展平后的数组为:',arr2.flatten('C')) ##默认为C,表示横向展平;
print('展平后的数组为:',arr2.flatten('F')) ##默认为C,表示纵向展平;


#拼接
arr3 = np.arange(12).reshape(3,4)
arr4 = 4*arr3

print('横向拼接:', np.hstack((arr3,arr4)))
print('纵向拼接:', np.vstack((arr3,arr4)))
print('横向拼接:',np.concatente((arr3,arr4),axis=1))  #axis =1,或 0


#分割
print(np.hsplit(arr,2))   #横向分割  必须分割后两个等宽
print(np.vsplit(arr,2))  #纵向分割
print(np.split(arr,2,axis = 1))   #横向分割

numpy 矩阵

print(np.mat("1 0 1;1 1 0;1 1 1"))
print(np.matrix([[1,2,3],[4,5,6],[7,8,9]]))

arr1 = np.eye(3)
arr2 = 3*arr1
print( np.bmat("arr1 arr2;arr2 arr1"))

矩阵的运算(针对所有元素的操作)

#1.乘以常数:
matr4 = matr1*2
print(matr4)
#2.加法/减运算
print(matr4+matr1)
print(matr4-matr1)
#3.乘法运算:
print(matr1*matr4)
#4.对应元素相乘:
print(np.multiply(matr4,matr1))

#矩阵属性
print('矩阵转置:\n', matr1.T)
print('矩阵求逆:\n', matr1.I)

ufunc 函数(通用函数)

ufunc针对数组所有元素的运算

#1、数组四则运算:
print(x+y)
print(x-y)
print(x*y)
print(x/y)
print(x**y)

#2、数组比较运算:
print(x < y)
print(x == y)
print(x >= y)

#3、逻辑运算:
print('逻辑and运算:', np.all(x==y))
print('逻辑or运算:', np.any(x==y))

#4.广播机制:
arr1 = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])
arr2 = np.array([1,2,3])
print(arr1+arr2)


numpy 简单的统计分析(排序与去重)

#排序:
arr3 = np.random.randint(1, 10, size=10)
arr3.sort()
print('排序后的数组为:',arr3)

arr4 = np.random.randint(1, 10, size=(3,3))
arr4.sort(axis = 0) #按列排序

print(arr3.argsort()) #argsort:返回重新排序后的下标;


#去重:
names = np.array(['小明', '小旭', '小刚', '小明', '小旭'])
print('去重之后的数组为:', np.unique(names))

#重复:
#(1)tile :针对整个数组重复,不针对单独元素重复
print('重复后的数组names为:\n', np.tile(names, 3))

#(2)repeat:主要针对元素重复:
arr = np.random.randint(0,10,size=(3,3))
print(arr)
print(arr.repeat(2, axis=0))##按行重复
print(arr.repeat(2, axis=1))##按列重复


常用统计函数

arr = np.arange(20).reshape(4,5)
print('求总和:', np.sum(arr))
print('按行求和:', np.sum(arr, axis=1))

print('求总均值:', np.mean(arr))
print('按行2求均值:', np.mean(arr, axis=1))

print('总标准差',np.std(arr))
print('按行求标准差',np.std(arr, axis=1))

print('方差:', np.var(arr))
print('按行求方差:', np.var(arr,axis=1))

# 最小值:
print(np.min(arr))   #max 最大值
print(np.argmin(arr))  #返回最小值索引

# 累计和:
print(np.cumsum(arr))

#累计积
print(np.cumprod(arr))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值