Numpy中Array用法总结

Numpy中array(数组)

Numpy主要对象是齐次多维数组,由正整数元组索引,Numpy中维度称为轴(axis),数组的维数称为秩(rank)。
Array/Series/DataFrame对比学习

可以参考:Numpy快速入门
Numpy基本特点及常用操作

1.1 创建数组

常规方法创建数组

import numpy as np
#一维数组
a=np.array([2,3,4])
b=np.array([2.,3.,4.])
#二维数组
c=np.array([[1.,2.],[3.,4.]])
d=np.array([[1,2],[3,4]],dtype=complex)

print(a,a.dtype)
print(b,b.dtype)
print(c,c.dtype)
print(d,d.dtype)

#>>>[2 3 4] int64
#>>>[2. 3. 4.] float64
#>>>[[1. 2.]
    [3. 4.]] float64
#>>>[[1.+0.j 2.+0.j]
    [3.+0.j 4.+0.j]] complex128

利用函数创建数组

#创建数组的常用函数
np.arange(0,7,1,dtype=float) #arange函数创建
np.ones((2,3,4),dtype=int) #创建2页3行4列的数据
np.zeros((2,3,4)) #创建2页3行4列的零矩阵
np.linspace(-1,2,5) #起点为1,终点为2,取5个数
np.random.randint(-9,3,(2,3)) #生成两行三列,大小为-9,3)之间的随机整数

1.2 修改数据

#一维数组
a=np.arange(0,10,1)**2
#>>>array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])
a[-1]=100 #单个赋值
#>>>array([  0,   1,   4,   9,  16,  25,  36,  49,  64, 100])
a[1:4]=100 #批量赋值
#>>>array([  0, 100, 100, 100,  16,  25,  36,  49,  64, 100])
b=[np.sqrt(np.abs(i)) for i in a] #通过a循环遍历赋值
print(b)
#>>>[0.0, 10.0, 10.0, 10.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0]

1.3 数组输出

  1. 从左到右,从上到下
  2. 一维数组输出为行,二维数组输出为矩阵,三维数组输出为矩阵列表

1.4 基本运算

数值运算&矩阵运算
元素级运算(一维数组)

a=np.arange(1,5,1)
b=np.array([0,1,2,3])
a-b #对应相减
#>>>array([1, 1, 1, 1])
a*b #对应相乘
#>>>array([ 0,  2,  6, 12])
a**2 #求平方
#>>>array([ 1,  4,  9, 16])
np.sin(a)*5 #三角函数
#array([ 4.20735492,  4.54648713,  0.70560004, -3.78401248])
a>3 #判断值
#array([False, False, False,  True])
np.exp(a) #指数
#>>>array([ 2.71828183,  7.3890561 , 20.08553692, 54.59815003])

统计计算

#均值
a=np.random.randint(0,5,(2,3))
print(a.sum(),a.sum(0),a.sum(axis=0)) #分别对矩阵和列求和
print(a.mean(),a.min(1),a.std(1)) #分别对矩阵和行求均值、最小值及标准差
np.median(a) #求中位数
#>>>13 [3 5 5] [3 5 5]
#>>>2.1666666666666665 [1 2] [0.  0.94280904]
#>>>1.5

矩阵运算(二维数组)

a=np.array([[1,2],[3,4]])
b=np.arange(6).reshape(2,-1) #生成2行矩阵
print(a,'\n',b)
a.dot(b) #矩阵的乘法

1.5 索引/切片/遍历

#一维数组
a=np.arange(0,10,1)**2
#>>>[ 0  1  4  9 16 25 36 49 64 81]
#数组的索引切片原理和List等类似:索引从0开始,-1代表最后一个索引;左闭右开原则
print(a[2],a[-1]) #取某个值
#>>>4 81
print(a[-3:-1]) #切片取值
#>>>array([49, 64])

#二维数组
c=np.arange(0,20,1).reshape(4,-1)
print('第二行:',c[1],'\n二到四列:',c[:,1:4],'\n二到四行的第三列',c[1:4,2],
      '\n第二行:',c[1,:])
#遍历输出
for i in a:
    print(i)

1.6 形状操作

a=10*np.random.random((3,4)) #随机产生大小在0-1之间的3行4列的数
b=np.floor(a) #截取整数部分
b.ravel() #一维化操作(一行)
b.shape=(6,-1) #改变形状
b.transpose() #转置

1.7 删除

#一维数组中删除元素
a=np.arange(1,5,1)
print(a)
#>>>[1 2 3 4]
a=np.delete(a,0)  #删除a中第一个元素
print(a)
#>>>[2 3 4]

#二维数组中删除元素
#注:在删除里axis=0
b=np.arange(0,10,1).reshape(2,-1)
print(b)
#>>>[[0 1 2 3 4]
# [5 6 7 8 9]]
b=np.delete(b,1,axis=0) #删除b中第2行元素
print(b)
#>>>[[0 1 2 3 4]]

如果对于本文中代码或数据有任何疑问,欢迎评论或私信交流

相近文章:
Pandas中Series用法总结
Pandas中DataFrame用法总结

猜你喜欢

转载自blog.csdn.net/MsSpark/article/details/83050000