创建数组

简单数组的创建

NumPy创建简单的数组主要使用array()函数。

语法如下:

numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)

参数说明:

  • object:任何具有数组接口方法的对象
  • dtype:数据类型
  • copy:布尔型,可选参数,默认值为True,则object对象被复制;否则,只有当array方法返回副本,object参数为嵌套序列,或者需要副本满足数据类型和顺序要求时,才会生成副本。
  • order:元素才内存中的出现顺序,值为K/A/C/F。如果object参数是一个数组,则以下内容成立:C按行,F按列,A原顺序,K元素在内存中出现的顺序
  • subok:布尔型。如果值为True,则传递子类,否则返回的数组将强制为基类数组(默认值)
  • ndmin:指定生成数组的最小维数
#创建简单数组
import numpy as np
n1 = np.array([1,2,3,4,5]) #一维数组
n2 = np.array([[1,2],[3,4],[5,6]]) #多维数组
print(n1)
print(n2)
[1 2 3 4 5]
[[1 2]
 [3 4]
 [5 6]]
# 为数组指定数据类型
import numpy as np
n1 = np.array([1,2,3,4,5],dtype='int')
n2 = np.array([1,2,3,4,5],dtype='float')
print(n1)
print(n2)
[1 2 3 4 5]
[1. 2. 3. 4. 5.]
# 复制数组
import numpy as np
n1 = np.array([1,2,3,4,5,6,7,8])
n2 = np.array(n1,copy=True)
print(n2)

[1 2 3 4 5 6 7 8]
# 通过ndmin参数控制数组的最小维度
import numpy as np
n1 = np.array([1,2,3,4,5])
n2 = np.array(n1,ndmin=3)
print(n1)
print(n2)
[1 2 3 4 5]
[[[1 2 3 4 5]]]

不同方式创建数组

# 使用empty方法创建指定维度和未初始化的数组
import numpy as np
n1 = np.empty([2,5])
n2 = np.empty([3,5],dtype='int')
print(n1)
print(n2)
[[1.12876343e-311 2.37151510e-322 0.00000000e+000 0.00000000e+000
  2.31297541e-312]
 [1.16096346e-028 1.04857803e-142 1.16467185e-028 1.96849090e-062
  8.45915178e-053]]
[[        0         0         0         0         0]
 [        0         0         0         0         0]
 [     1064         0         0 706766702         0]]
# 使用zeros()方法创建以0填充的数组
import numpy as np
n1 = np.zeros(3,dtype='int')
n2 = np.zeros(6,dtype='float')
print(n1)
print(n2)
[0 0 0]
[0. 0. 0. 0. 0. 0.]
# 使用ones()方法创建以1填充的数组
import numpy as np
n1 = np.ones(3,dtype='int')
n2 = np.ones(5,dtype='float')
print(n1)
print(n2)
[1 1 1]
[1. 1. 1. 1. 1.]
# 使用full方法创建指定维度和类型的数组,并以指定的值填充
import numpy as np
n = np.full((3,5),8)
print(n)
[[8 8 8 8 8]
 [8 8 8 8 8]
 [8 8 8 8 8]]

从数值范围创建数组

使用arange()函数创建数组

arange函数:返回数组;rang函数:返回列表

语法如下:

arange([start,] stop[,step,],dtype=None)

参数说明:

  • start:起始值
  • stop: 终止值
  • step:步长,默认1
  • dtype:创建数组的数据类型,如果不设置数据类型,则使用输入数据的数据类型
import numpy as np
n = np.arange(1,12,2)
print(n)
[ 1  3  5  7  9 11]

使用linspace()函数创建等差数列

语法如下:

linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

参数说明:

  • start:序列的起始值
  • stop:序列的终止值,如果endpoint参数的值为True,则该值包含于数列中
  • num:要生成的等步长的样本数量,默认值为50
  • endpoint:如果为True,数列中包含stop参数的值;反之则不包含,默认值为True
  • retstep:如果值为True,则生成的数组中会显示间距,反之则不显示
  • dtype:数组的数据类型
import numpy as np
n = np.linspace(100,200,5,dtype='int')
print(n)
[100 125 150 175 200]

使用logspace()函数创建等差数列

语法如下:

logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)

参数说明:

  • start:序列的起始值
  • stop:序列的终止值,如果endpoint参数的值为True,则该值包含于数列中
  • num:要生成的等步长的样本数量,默认值为50
  • endpoint:如果为True,数列中包含stop参数的值;反之则不包含,默认值为True
  • base:对数log的底数
  • dtype:数组的数据类型
import numpy as np
n = np.logspace(0,63,64,base=2,dtype='int')
print(n)
[          1           2           4           8          16          32
          64         128         256         512        1024        2048
        4096        8192       16384       32768       65536      131072
      262144      524288     1048576     2097152     4194304     8388608
    16777216    33554432    67108864   134217728   268435456   536870912
  1073741824 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648
 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648
 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648
 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648
 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648
 -2147483648 -2147483648 -2147483648 -2147483648]

生成随机数组

rand()函数

使用rand函数生成(0,1)之间的随机数组

语法如下:

numpy.random.rand(d0,d1,d2,d3...dn)

参数说明:
-d0,d1,d2,d3…dn整数,表示维度 ,可以为空

# 使用rand函数生成(0,1)之间的随机数组
import numpy as np
n = np.random.rand(2,5)
print(n)
[[0.08829748 0.58065025 0.16854291 0.14488318 0.84731412]
 [0.4110295  0.84082674 0.14696503 0.53031846 0.32276215]]

randn()函数

使用randn函数生成符合正态分布的随机数组

语法如下:

numpy.random.randn(d0,d1,d2,d3...dn)

参数说明:
-d0,d1,d2,d3…dn整数,表示维度 ,可以为空

#使用randn函数生成符合正态分布的随机数组
import numpy as np
n = np.random.randn(2,5)
print(n)
[[-0.22858414 -0.36730773 -0.66107612 -0.55437216  0.84581984]
 [-0.25179785  0.67482856 -1.50695656 -1.26433428 -2.04880177]]

randint()函数

使用randint函数生成一定范围内的随机数组

语法如下:

numpy.random.randint(low,high=None,size=None)

参数说明:

  • low:低值(起始值),整数,且当参数high不为空时,参数low应小于参数high,否则程序会出现错误
  • high:高值(终止值),整数
  • size:数组维度,整数或者元组,整数表示一维数组,元组表示多维数组,默认值为空,如果为空,则仅返回一个整数
#使用randint函数生成一定范围内的随机数组
import numpy as np
n1 = np.random.randint(2,10,size=5)
n2 = np.random.randint(10,size=(2,6))
print(n1)
print(n2)
[9 7 9 9 9]
[[0 7 0 6 5 1]
 [3 7 7 7 4 8]]

normal()函数

使用normal函数生成正态分布的随机数

语法如下:

numpy.random.normal(loc,scale,size)

参数说明:

  • loc:正态分布的均值,对应正态分布的中心,‘loc=0’说明是一个以y轴为对称轴的正态分布
  • scale:正态分布的标准差,对应正态分布的宽度,scale值越大,正态分布的曲线越矮胖;scale值越小,曲线越高瘦
  • size:表示数组维度
#使用normal函数生成正态分布的随机数
import numpy as np
n = np.random.normal(0,0.1,10)
print(n)
[ 0.04822938 -0.04028214 -0.03562231 -0.15810292 -0.08976778  0.00771642
  0.05753914 -0.10006976 -0.08671998  0.12129305]

从已有数组中创建数组

asarray()函数

用于创建数组

语法如下:

numpy.asarray(a,dtype=None,order=None)

参数说明:

  • a:可以是列表、列表的元组、元组、元组的元组、元组的列表或多维数组。
  • dtype:数组的数据类型
  • order:值为C和F,分别代表按行排序和按列排序,即数组元素在内存中出现的顺序
import numpy as np
n1 = np.asarray([1,2,3,4,5])
n2 = np.asarray([[1,2],[3,4]])
n3 = np.asarray((1,2,3,4,5))
n4 = np.asarray(((1,2),(3,4)))
n5 = np.asarray(([1,2],[3,4]))
print(n1)
print(n2)
print(n3)
print(n4)
print(n5)
[1 2 3 4 5]
[[1 2]
 [3 4]]
[1 2 3 4 5]
[[1 2]
 [3 4]]
[[1 2]
 [3 4]]

frombuffer()函数

frombuffer函数接收buffer参数,以流的形式将读入的数据转换为数组

语法如下:
nmupy.frombuffer(buffer,dtype=float,count=-1,offset=0)

参数说明:

  • buffer:实现了buffer方法的对象
  • dtype:数组的数据类型
  • count:读取的数据数量,默认值为-1,表示读取所有数据
  • offset:读取的起始位置,默认值为0
import numpy as np
n = np.frombuffer(b'jackeroo',dtype='S1')#Python3中默认字符串是Unicode类型,所以要转换成Byte string类型,需要在字符串前面加上b
print(n)
[b'j' b'a' b'c' b'k' b'e' b'r' b'o' b'o']

fromiter()函数

fromiter()函数用于从可迭代对象中建立数组对象

语法如下:

numpy.fromiter(iterable,dtype,count=-1)

参数说明:

  • interable:可迭代对象
  • dtype:数组的数据类型
  • count:读取的数据数量,默认值为-1,表示读取所有数据
import numpy as np
iterable = (x *2 for x in range(5))
n = np.fromiter(iterable,dtype='int')
print(n)
[0 2 4 6 8]

empty_like()函数

用于创建一个与给定数组具有相同维度和数据类型,且未初始化的数组

语法如下:

numpy.empty_like(prototype,dtype=None,order='K',subok=True)

参数说明:

  • prototype:给定的数组
  • dtype:覆盖结果的数据类型
  • order:指定数组的内存布局,C按行,F按列,A原顺序,K数据元素在内存中的出现顺序
  • subok:默认情况下,返回的数组被强制为基类数组。如果为True,则返回子类
import numpy as np
n = np.empty_like([[1,2],[3,4]],dtype='int')
print(n)
[[1 2]
 [3 4]]

zeros_like()函数

用于创建一个与给定数组具有相同维度和数据类型,且以0填充的数组

import numpy as np
n = np.zeros_like([[1,2],[3,4]],dtype='int')
print(n)
[[0 0]
 [0 0]]

ones_like()函数

用于创建一个与给定数组具有相同维度和数据类型,且以1填充的数组

import numpy as np
n = np.ones_like([[1,2],[3,4]],dtype='int')
print(n)
[[1 1]
 [1 1]]

full_like()函数

用于创建一个与给定数组具有相同维度和数据类型,并以指定值填充的数组

语法如下:

numpy.full_like(a,fill_value,dtype=None,order='K',subok=True)

参数说明:

  • a:给定的数组
  • fill_value:填充值
  • dtype:覆盖结果的数据类型
  • order:指定数组的内存布局,C按行,F按列,A原顺序,K数据元素在内存中的出现顺序
  • subok:默认情况下,返回的数组被强制为基类数组。如果为True,则返回子类
import numpy as np
a = np.arange(6)
print(a)
n1 = np.full_like(a,6)
print(n1)
[0 1 2 3 4 5]
[6 6 6 6 6 6]

数组的基本操作

数组运算

#加法运算
import numpy as np
n1 = np.array([1,2])
n2 = np.array([3,4])
print(n1+n2)
[4 6]
#减法运算
import numpy as np
n1 = np.array([1,2])
n2 = np.array([3,4])
print(n1-n2)
[-2 -2]
#乘法运算
import numpy as np
n1 = np.array([1,2])
n2 = np.array([3,4])
print(n1*n2)
[3 8]
#除法运算
import numpy as np
n1 = np.array([1,2])
n2 = np.array([3,4])
print(n2/n1)
[3. 2.]
#幂运算
import numpy as np
n1 = np.array([1,2])
n2 = np.array([3,4])
print(n1**n2)
[ 1 16]
#比较运算
import numpy as np
n1 = np.array([1,2])
n2 = np.array([3,4])
print(n1>n2)
print(n1<n2)
[False False]
[ True  True]
# 数组的标量运算
import numpy as np
n1 =np.linspace(7500,10000,6,dtype='int')
print(n1)
print(n1/100)
[ 7500  8000  8500  9000  9500 10000]
[ 75.  80.  85.  90.  95. 100.]

数组的切片和索引

索引

所谓索引,即用于标记数组当中对应元素的唯一数字,从0开始,即数组的第一个元素的索引是0,以此类推,NumPy数组可以使用标准Python语法x[obj]的语法对数组进行索引,其中x数数组,obj是索引

import numpy as np
n1 = np.array([1,2,3,4,5])
print(n1[2])
3

切片式索引

语法如下:

[start:stop:step]

参数说明:

  • start:起始索引
  • stop:终止索引
  • step:步长
import numpy as np
n1 = np.array([1,2,3,4,5])
print(n1[2:])
[3 4 5]

二维数组索引

二维数组的索引,可以使用array[n,m]的方式,以逗号分割,表示第n个数组中的第m个元素

import numpy as np
n = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
print(n[2])
print(n[2,3])
print(n[-1,1])
[ 8  9 10 11]
11
9

二维数组切片式索引

import numpy as np
n = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
print(n[:2,1])
print(n[:2,1:])
print(n[:,1])
[1 5]
[[1 2 3]
 [5 6 7]]
[1 5 9]

数组重塑

#一维数组重塑
import numpy as np
n = np.arange(6)
print(n)
n1 = n.reshape(2,3)
print(n1)
[0 1 2 3 4 5]
[[0 1 2]
 [3 4 5]]
#一维数组重塑
import numpy as np
n = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
n1 = n.reshape(3,4)
print(n1)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
#多维数组重塑
import numpy as np
n = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(n)

n1 = n.reshape(2,6)
print(n1)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]
#数组转置
import numpy as np
n = np.arange(24).reshape(4,6)
print(n)
print('数组转置后结果为:')
print(n.T)
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
数组转置后结果为:
[[ 0  6 12 18]
 [ 1  7 13 19]
 [ 2  8 14 20]
 [ 3  9 15 21]
 [ 4 10 16 22]
 [ 5 11 17 23]]

数组增、删、改、查

数组的增加——hstack()vstack()

  • 水平方向增加:hstack函数
  • 垂直方向增加:vstack函数
import numpy as np
n1 = np.array([[1,2],[3,4],[5,6]])
n2 = np.array([[10,20],[30,40],[50,60]])
print(np.hstack((n1,n2)))
print(np.vstack((n1,n2)))
[[ 1  2 10 20]
 [ 3  4 30 40]
 [ 5  6 50 60]]
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [10 20]
 [30 40]
 [50 60]]

数组的删除——delete()方法

import numpy as np
n1 = np.array([[1,2],[3,4],[5,6]])
print(n1)
n2 = np.delete(n1,1,axis=0)  #删除第2行
print(n2)
n3 = np.delete(n1,1,axis=1)  #删除第2列
print(n3)
[[1 2]
 [3 4]
 [5 6]]
[[1 2]
 [5 6]]
[[1]
 [3]
 [5]]

数组的修改

import numpy as np
n1 = np.array([[1,2],[3,4],[5,6]])
print(n1)
n1[1]=[30,20]
print(n1)
n1[2][0]=66
print(n1)
[[1 2]
 [3 4]
 [5 6]]
[[ 1  2]
 [30 20]
 [ 5  6]]
[[ 1  2]
 [30 20]
 [66  6]]

数组的查询

数组的查询,使用索引和切片方法来获取指定范围的数组或数组元素,还可以通过where函数来查询符合条件的数组或元素

语法如下:

numpy.where(condition,x,y)

参数说明:

  • condition:条件
  • x:满足条件输出x;
  • y:不满足条件输出y
import numpy as np
n1 = np.arange(10)
print(n1)
#print(n1.where(n1>5,2,0))
[0 1 2 3 4 5 6 7 8 9]

Numpy矩阵的基本操作

创建矩阵——mat()函数

import numpy as np
a = np.mat('5,6;7,8')
print(a)
print(type(a))
b = np.mat([[1,2],[3,4]])
print(b)
print(type(b))
c = np.array([[1,2],[3,4]])
print(c)
print(type(c))
[[5 6]
 [7 8]]
<class 'numpy.matrix'>
[[1 2]
 [3 4]]
<class 'numpy.matrix'>
[[1 2]
 [3 4]]
<class 'numpy.ndarray'>
#使用mat函数创建常见的矩阵-1
import numpy as np
data1 = np.mat(np.zeros((3,3)))
print(data1)
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
#使用mat函数创建常见的矩阵-2
import numpy as np
data1 = np.mat(np.ones((3,3)))
print(data1)
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
#使用mat函数创建常见的矩阵-3
import numpy as np
data1 = np.mat(np.random.rand(3,3))
print(data1)
[[0.59756605 0.19617197 0.64689553]
 [0.72703544 0.69068546 0.12412279]
 [0.16682727 0.5492912  0.19219691]]
#使用mat函数创建常见的矩阵-4
import numpy as np
data1 = np.mat(np.random.randint(1,8,size=(3,5)))
print(data1)
[[5 5 6 1 6]
 [7 4 1 4 1]
 [5 2 6 5 1]]
#使用mat函数创建对角矩阵
import numpy as np
data1 = np.mat(np.eye(4,4,dtype='int'))
print(data1)
[[1 0 0 0]
 [0 1 0 0]
 [0 0 1 0]
 [0 0 0 1]]
#使用mat函数创建对角线矩阵
import numpy as np
a = [1,2,3,4,5,6]
data1 = np.mat(np.diag(a))
print(data1)
[[1 0 0 0 0 0]
 [0 2 0 0 0 0]
 [0 0 3 0 0 0]
 [0 0 0 4 0 0]
 [0 0 0 0 5 0]
 [0 0 0 0 0 6]]

矩阵运算

#矩阵加法运算
import numpy as np
data1 = np.mat([[1,2],[3,4],[5,6]])
data2 = np.mat([1,2])
print(data1+data2)
[[2 4]
 [4 6]
 [6 8]]
#矩阵减法运算
import numpy as np
data1 = np.mat([[1,2],[3,4],[5,6]])
data2 = np.mat([1,2])
print(data1-data2)
[[0 0]
 [2 2]
 [4 4]]
#矩阵除法运算
import numpy as np
data1 = np.mat([[1,2],[3,4],[5,6]])
data2 = np.mat([1,2])
print(data1/data2)
[[1. 1.]
 [3. 2.]
 [5. 3.]]
#矩阵乘法运算
import numpy as np
data1 = np.mat([[1,2],[3,4],[5,6]])
data2 = np.mat([[1,2],[3,4]])
print(data1*data2)
[[ 7 10]
 [15 22]
 [23 34]]

矩阵转换

矩阵转置

import numpy as np
n1 = np.mat('1,2,3;4,5,6;7,8,9')
print(n1)
print("转置后的结果是 \n",n1.T)
[[1 2 3]
 [4 5 6]
 [7 8 9]]
转置后的结果是 
 [[1 4 7]
 [2 5 8]
 [3 6 9]]

矩阵求逆

import numpy as np
n1 = np.mat('1,2,3;4,5,6;7,8,9')
print(n1)
print("求逆后的结果是 \n",n1.I)
[[1 2 3]
 [4 5 6]
 [7 8 9]]
求逆后的结果是 
 [[ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]
 [-6.30503948e+15  1.26100790e+16 -6.30503948e+15]
 [ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]]

Numpy的常用统计分析函数

函数 说明
add()/subtract()/multiply()/divide() 加、减、乘、除
abs() 取数组中各元素的绝对值
sqrt() 计算数组中各元素的平方根
square() 计算数组中各元素的平方
log()/log10()/log2() 计算数组中各元素的自然对数和分别以10/2为底数的对象
reciprocal() 计算数组中各元素的倒数
power() 第一个数组中的元素作为底数,计算它与第二个数组对应元素的幂
mod() 计算数组之间对应元素相除后的余数
around() 计算数组中各元素指定小数位数的四舍五入值
ceil()、floor() 计算数组中各元素向上和向下取整
sin()、cos()、tan() 三角函数,计算数组中角度的正弦值、余弦值和正切值
modf() 将数组各元素的小数和整数部分分割为两个独立的数组
exp() 计算数组中各个元素的指数值
sign() 计算数组中各个元素的符号值1(+),0,-1(-)
maximum()、fmax() 计算数组中的最大值
minmum()、fmin() 计算数组中的最小值
copysign(a,b) 将数组b中各个元素的符号赋值给a对应的元素

算术函数

#加法运算
import numpy as np
n1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
n2 = np.array([10,10,10])
print(np.add(n1,n2))
[[11 12 13]
 [14 15 16]
 [17 18 19]]
#减法运算
import numpy as np
n1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
n2 = np.array([10,10,10])
print(np.subtract(n1,n2))
[[-9 -8 -7]
 [-6 -5 -4]
 [-3 -2 -1]]
#乘法运算
import numpy as np
n1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
n2 = np.array([10,10,10])
print(np.multiply(n1,n2))
[[10 20 30]
 [40 50 60]
 [70 80 90]]
#除法运算
import numpy as np
n1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
n2 = np.array([10,10,10])
print(np.divide(n1,n2))
[[0.1 0.2 0.3]
 [0.4 0.5 0.6]
 [0.7 0.8 0.9]]
#计算倒数
import numpy as np
n = np.array([0.25,0.5,2,10])
print(np.reciprocal(n))
[4.  2.  0.5 0.1]
#幂运算
import numpy as np
n1 = np.array([1,2,3,4,5])
print(np.power(n1,3))
n2 = np.array([1,2,3,4,5])
print(np.power(n1,n2))
[  1   8  27  64 125]
[   1    4   27  256 3125]
#取余运算
import numpy as np
n1 = np.array([11,22,33,44,55])
print(np.mod(n1,10))
n2 = np.array([7,3,6,7,12])
print(np.mod(n1,n2))
[1 2 3 4 5]
[4 1 3 2 7]

舍入函数

四舍五入——around()函数

四舍五入在NumPy中使用较多,主要使用around()函数\

语法如下:

numpy.around(a,decimals)

参数说明:

  • a:数组
  • decimals:舍入的小数位数,默认值为0,如果为负,整数将四舍五入到小数点左侧的位置
import numpy as np
n = np.array([1.451,2.562,3.676,4.23,5.987,-1.243,-3.758])
print(np.around(n))
print(np.around(n,decimals=2))
print(np.around(n,decimals=-1))
[ 1.  3.  4.  4.  6. -1. -4.]
[ 1.45  2.56  3.68  4.23  5.99 -1.24 -3.76]
[ 0.  0.  0.  0. 10. -0. -0.]

取整函数——ceil()函数和floor()函数

  • ceil():向上取整,返回大于或等于指定表达式的最小整数
  • floor():向下取整,返回小于或等于指定表达式的最大整数
#向上取整
import numpy as np
n = np.array([-1.9,1.66,-0.2,0.888,15])
print(np.ceil(n))
[-1.  2. -0.  1. 15.]
#向下取整
import numpy as np
n = np.array([-1.9,1.66,-0.2,0.888,15])
print(np.floor(n))
[-2.  1. -1.  0. 15.]

三角函数

#计算sin正弦值
import numpy as np
n = np.array([0,30,45,60,90])
print(np.sin(n*np.pi/180))
[0.         0.5        0.70710678 0.8660254  1.        ]
#计算cos余弦值
import numpy as np
n = np.array([0,30,45,60,90])
print(np.cos(n*np.pi/180))
[1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
 6.12323400e-17]
#计算tan正切值
import numpy as np
n = np.array([0,30,45,60,90])
print(np.tan(n*np.pi/180))
[0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
 1.63312394e+16]
#将弧度转换为角度
import numpy as np
n = np.array([0,30,45,60,90])
sin = np.sin(n*np.pi/180)
print("打印正弦值:",sin)
inv = np.arcsin(sin)
print("打印余弦值:",inv)
print("打印角度弧度值:")
print(np.degrees(inv))
打印正弦值: [0.         0.5        0.70710678 0.8660254  1.        ]
打印余弦值: [0.         0.52359878 0.78539816 1.04719755 1.57079633]
打印角度弧度值:
[ 0. 30. 45. 60. 90.]

统计分析函数

统计分析函数是指对NumPy数组或某条轴的数据进行统计运算。主要函数如下:

函数 说明
sum() 对数组中的元素或某行某列的元素进行求和
cumsum() 所有数组元素累计求和
cumprod() 所有数组元素累计求积
mean() 计算平均值
min()、max() 计算数组的最小值和最大值
average() 计算加权平均值
median() 计算数组中元素的中位数(中值)
var() 计算方差
std() 计算标准差
eg() 对数组的第二维度的数据进行求平均
argmin()、argmax() 计算数组的最小值和最大值的下标(注:是一维的下标)
unravel_index() 根据数组形状将一维下标转换成多维下标
ptp() 计算数组中最大值和最小值的差
#用sum()函数求和
import numpy as np
n = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.sum(n))
print(np.sum(n,axis=0))#按行
print(np.sum(n,axis=1))#按列
45
[12 15 18]
[ 6 15 24]
#用mean()函数求均值
import numpy as np
n = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.mean(n))
print(np.mean(n,axis=0))#按行
print(np.mean(n,axis=1))#按列
5.0
[4. 5. 6.]
[2. 5. 8.]
#用max()和min()函数极值
import numpy as np
n = np.array([[1,2,3],[4,5,6],[7,8,9]])

print(np.max(n))
print(np.max(n,axis=0))#按行
print(np.max(n,axis=1))#按列

print(np.min(n))
print(np.min(n,axis=0))#按行
print(np.min(n,axis=1))#按列
9
[7 8 9]
[3 6 9]
1
[1 2 3]
[1 4 7]
#用average()函数计算加权平均值
import numpy as np
price = np.average([34.5,36,37.8,39,39.8,33.6])
#number = np.average([900,580,230.150,120,1800])
print('加权平均价')
print(np.average(price,weights=number))
加权平均价
36.78333333333334
#用median()函数计算中位数
import numpy as np
price = np.array([34.5,36,37.8,39,39.8,33.6])
print(np.median(price))
36.9
#用var()函数计算方差
import numpy as np
price = np.array([34.5,36,37.8,39,39.8,33.6])
print(np.var(price))
5.168055555555551
#用std()函数计算标准差
import numpy as np
price = np.array([34.5,36,37.8,39,39.8,33.6])
print(np.std(price))
2.2733357771247853

数组的排序

sort()函数

直接改变原数组,参数axis指定按行还是按列排序

import numpy as np
n = np.array([[4,7,3],[2,8,5],[9,1,6]])
print(np.sort(n))
print(np.sort(n,axis=0))#按行
print(np.sort(n,axis=1))#按列
[[3 4 7]
 [2 5 8]
 [1 6 9]]
[[2 1 3]
 [4 7 5]
 [9 8 6]]
[[3 4 7]
 [2 5 8]
 [1 6 9]]

argsort()函数

使用argsort()函数对数组进行排序,返回升序排序之后的数组值为从小到大的索引值

import numpy as np
x = np.array([4,7,3,2,8,5,1,9,6])
print(x)
y = np.argsort(x)
print(y)
print(x[y])
[4 7 3 2 8 5 1 9 6]
[6 3 2 0 5 8 1 4 7]
[1 2 3 4 5 6 7 8 9]

lexsort()函数

用于对多个序列进行排序,可以把它当做是对电子表格进行排序,每一列代表一个序列,排序时会优先照顾靠后的列

import numpy as np
math = np.array([101,109,115,108,118,118])
en = np.array([117,105,118,108,98,109])
total = np.array([621,623,620,620,615,615])
sort_total = np.lexsort((en,math,total))
print("排序后的索引值:")
print(sort_total)
print("通过排序后的索引获取的数组:")
print(np.array([[en[i],math[i],total[i]] for i in sort_total]))
排序后的索引值:
[4 5 3 2 0 1]
通过排序后的索引获取的数组:
[[ 98 118 615]
 [109 118 615]
 [108 108 620]
 [118 115 620]
 [117 101 621]
 [105 109 623]]
1. 本站所有文章和内容源于站长整理与输出,如有侵权请邮件联系站长!
2. 本站部分文章教程提供PDF版本付费下载收藏备用,网页版可免费阅读与浏览!
3. 联系站长或者加入社群,请通过顶部菜单栏加入,或者邮件联系 jackerooliu@gmail.com.
Jackeroo的个人独立博客 | Working | Life | Interests » NumPy的学习笔记

发表评论