数组常用方法总结(有广播机制)

目录

 

(一)导入模块

(二) 一维数组创建

(三)二维数组创建

(四)数组属性

(五)专门用来构建数组的函数

(六)生成随机数

(七)一维数组索引

(八)二维数组索引

(九)去重

 (十)重复

(十一)数组展平

 (十二)数组组合hstack、vstack

(十三)concatenate拼接

(十四)分割split

(十五)读写文件

(十六)统计函数

(十七)排序

(十八) ufunc函数 通用函数

(十九)广播机制


(一)导入模块

import numpy as np

(二) 一维数组创建

np.array([1,2,3,4])

(三)二维数组创建

arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])

(四)数组属性

print('查看数组维度:',arr.ndim)
print('查看数组结构:',arr.shape)#返回元组带逗号
print('查看数组结构,几行:',arr2.shape[0])
print('查看数组结构,几列:',arr2.shape[1])
print('元素的个数:',arr2.size)
print('数组元素类型:',arr2.dtype)#int32

#3行4列 改4行3列
arr.shape = 4,3
print('重新设置shape后的数组为:\n',arr)

(五)专门用来构建数组的函数

1、arange类似于range函数
print(np.arange(0,1,0.1))#不包含终止值;0.表示浮点数

2.linspace:等差数列:
print(np.linspace(0,10,11))#终止值是包含的,生成等差数列,11个值是等差的
print(np.linspace(2,10,5))#终止值是包含的,生成等差数列,5个值是等差的

3、logspace:等比数列
a1 a3 a3 a4 a5 a6  这就是等比数列a2/a1 = a6/a5
print(np.logspace(0,2,3))#起始值和终止值都是指数默认底数base = 10
print(np.logspace(0,3,8,base=10))#10的0次幂,10的1次幂,10的2次幂,等比取8个,默认num=50个

4全零数组:
print(np.zeros((2,3)))#两行三列数组
5、全一数组
print(np.ones((4,5)))#传入的是我们的shape,元组
6、单位数组
print(np.eye(3))
print(np.eye(4))
7、对角数组(方阵,行列数相同)
print(np.diag([1,2,3,4]))##传入的是对角线上的值

(六)生成随机数

print(np.random.random(10))

print('生成正态分布数组:\n',np.random.randn(10,5))#十行五列
print('生成随机整数:\n',np.random.randint(2,10,size=[2,5]))
两行五列2,10区间范围,每个数都是大于等于2,小于10的
print('生成服从均匀分布的随机数:\n',np.random.rand(10,5))

(七)一维数组索引

arr = np.arange(10)
print(arr)
print(arr[8])
print(arr[0])
print(arr[:5])
print(arr[::2])
print(arr[1::2])
arr[:2] =100,101##修改元素的值
print(arr)

(八)二维数组索引

arr2=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,6]])

print(arr2.shape)
print(arr2[1,0])#取的是5
print(arr2[0,2:4])#取的是3,4
print(arr2[1,1:3])
print(arr2[0:2,1:3])#23和67
print(arr2[1])#取得是第二行所有值
print(arr2[1,:])#取得是第二行所有值

print(arr2[(1, 2),(1, 3)]) # 第一个括号(1,2)取第二行和第三行,第二个括号(1,3)分别在第二行第三行取下标为1和3的数

print(arr2[(1,2),(0,3)]) # 同上

(九)去重

arr4 = np.array(['关羽','张飞','刘备','刘备','张飞'])
print('去重之后的数组为:',np.unique(arr4))#数组方法去重
print(set(arr4))#集合去重

 (十)重复

arr2=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,6]])

(1)print(np.tile(arr2, 3))#对数组整体打包,不拆进行重复三次

(2)print(arr2.repeat(2,axis = 0))#按列进行重复两次,能拆分

(3)print(arr2.repeat(2,axis = 1))

(十一)数组展平

arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]]) 

# 2将二维转化为一维
arr2=arr.ravel()
print('展平后的数组:',arr2)

# 3、flatten:
print('横向展平',arr.flatten()) #默认是'C'横向展平

print('纵向展平',arr4.flatten('F'))

 

 (十二)数组组合hstack、vstack

(1)乘积
arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
arr2 = 3*arr
print(arr2)

(2)横向变化,拼接(借用上面的arr2)
print('横向变化:\n',np.hstack((arr, arr2)))

(3)纵向变化
print('纵向变化:\n',np.vstack((arr, arr2)))

(十三)concatenate拼接

arr是             arr2是     

print(np.concatenate((arr, arr2), axis=1))

print(np.concatenate((arr, arr2), axis=0))

(十四)分割split

arr = np.array([[1,2,4,5],[4,5,6,8],[7,8,10,11],[5,4,3,6]])

(1)
print('数组横向分割:\n',np.hsplit(arr, 2))

print(np.split(arr,2,axis=1))#横向分割

(2)
print('数组纵向分割:\n',np.vsplit(arr, 2)) 
与 
print(np.split(arr,2,axis=0))#纵向分割

 

(十五)读写文件

arr = np.arange(100).reshape(10,10)
np.save("arr",arr)#保存生成一个2进制文件
注意:存储的时候要指定存储的路径,不需要指定后缀
save表示存储单个的数组
load_data = np.load('arr.npy')#读取打印
print(load_data)
arr2 = np.arange(0,1,0.1)
savez表示存储多个数组
np.savez('arrs',arr,arr2)#出多个数组文件
file=np.load('arrs.npz')
print(np.load('arrs.npz'))#里面放了很多npy文件
print(list(file))#两个文件名['arr_0', 'arr_1']
print(file['arr_0'])#字典的取值方法
二进制读取都用load

文本文件===>包含txt/.csv表格类型其实也是文本
                             类型    分隔符
np.savetxt('arr.txt',arr,fmt= '%d',delimiter=',')
print(np.loadtxt('arr.txt', delimiter=','))#默认浮点型,所以有个点

 

(十六)统计函数

#1、求和
print(arr2)
print('所有元素总和:',np.sum(arr2))#数组进行求和

print('纵向求和:',arr2.sum(axis=0))#纵向求和,返回结过顺序列表
print('横向求和:',arr2.sum(axis=1))#纵向求和

#2、求平均
print(np.mean(arr2))
print('横向求均值:',arr2.mean(axis=1))
print('纵向求均值:',arr2.mean(axis=0))

#3、方差
print('方差:',np.var(arr2))
print(arr2.var(axis=0))
print(arr2.var(axis=1))

#4、标准差
print(arr2.std(axis=0))
# 5、最大值
print(arr2.max(axis= 0))
# 6、最小值
print(arr2.min(axis= 0))
# 7、最大值索引
print(arr2.argmax(axis=0))
# 8、最小之索引
print(arr2.argmin(axis=0))

#9、累计叠加
print(np.cumsum(arr2))#累计叠加
#10、累计乘积
print(np.cumprod(arr2))#累计乘积

(十七)排序

arr2 = np.random.randint(0,10,size=(3,3))
print(arr2)
# print(arr2.sort())#没有返回值
arr2.sort(axis=0)#作业:在python中sort和sorted的用法
print(arr2)#随机数

arr3 = np.array([2,3,6,8,0,7])
print(arr3.argsort())#[4 0 1 2 5 3]返回的是从小到大排序的索引值
index = arr3.argsort()[:5]
index1 = arr3.argsort()[0]
index2 = arr3.argsort()[-1]
paixuhou=[0,2,3,6,7,8,]
#排序后根据索引取值
print(arr3[index])

(十八) ufunc函数 通用函数

# ufunc函数 通用函数,对数组中所有元素进行操作的函数
x=np.array([1,2,3])
y=np.array([2,2,4])
print(x-y)


print(x+y)

print(x*y)

print(x/y)

print(x**y)

print(x>y)

print(x<y)

print(x==y)#还有大于等于 小于等于 不等于!=

逻辑运算 或与非
print(np.all(x == y))#与运算 一假则假

print(np.any(x == y))#或运算 一真则真

(十九)广播机制

arr1 = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])
print(arr1)



arr2=np.array([1,1,1])#一维的行数一致能广播
print(arr1+arr2)


arr3 = np.array([[1],[2],[3],[4]])#二维的列数一致能广播
print(arr3)



print(arr1+arr3)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值