numpy学习小笔记

目录

一.创建数组 

二.数据类型与数组类型

1.数据类型

2.数据类型用dtype,数组类型用type

3.修改数据类型用astype

astype不改变原数组数据的类型

三.多维数组

四.数组的索引、切片和替换

1.索引和切片

2.替换

五.数组的运算

1.数组与数字的运算

2.数组与数组运算

六.对数组形状的操作

 1.reshape和resize

2.展平:将多维数组转换为一维数组

3.两种转置

4.数组的叠加

5.数组的切割

七.拷贝

八.文件存储相关的操作

 1.保存文件

 2.读取文件

九.两个特殊值和处理缺失值

 1.NAN和INF

2.处理缺失值

十.axis的理解

十一.random模块

1.随机数种子seed

2.random.rand():

3.np.random.randn(n,m):

4.random.randint()

5.random.choice

6.random.shuffle

十二.常用函数

1.单个值运算

2.两个值运算

3.数组相关的运算

4.排序

5.其他常用函数


一.创建数组 

1.array

import numpy as np
a1=np.array([1,2,3,4])
print(a,",type=",type(a))

输出:

[1 2 3 4] ,type= <class 'numpy.ndarray'>

2.arange

b=np.arange(1,10,2)#star,stop,step,左闭右开
print(b,",type=",type(b))

输出:

[1 3 5 7 9] ,type= <class 'numpy.ndarray'>

3.random:产生一个N行N列的数组,其中值都是0~1的随机数

c=np.random.random((2,2))
print(c)

输出:

[[0.45313119 0.99503673]
 [0.85987526 0.96949184]]

4.randint:前两个参数控制值的范围,size控制数组形式

d=np.random.randint(0,9,size=(4,4))#创建4行4列的数组,其中值介于[0,9)
print(d)

输出:

[[8 0 3 4]
 [4 3 5 1]
 [1 6 0 5]
 [4 5 0 2]]

5.特殊的数组:

全零数组zeros

单位矩阵数组eye

全一数组ones

注意不要漏了括号

e=np.zeros((3,3))#创建3行3列的数组,其中行和列要用括号括起来
print(e)

e1=np.eye(3)#参数3表示维度
print("e1:\n",e1)

e2=np.ones((3,3))#(3,3)表示数组形式,三行三列
print("e2:\n",e2)

输出:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
e1:
 [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
e2:
 [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

注意:数组中数据类型必须一致,不能同时出现多种数据类型

二.数据类型与数组类型

1.数据类型

数据类型描述唯一标识符
bool

用一个字节存储的布尔类型

(True或False)

b
int8一个字节大小,-128至127i1
int16整数,16位整数(-32768~32767)i2
int32整数,32位整数(-2147483648~2147483647)i4
int64

整数,64位整数(-9223372036854775808~9223372036854775807)

i8
uint8无符号整数,(0~255)u1
uint16无符号整数,(0~65535)u2
uint32无符号整数,(0~2^32-1)u4
uint64无符号整数,(0~2^64-1)u8
float16半精度浮点数,16位,正负号1位,指数5位,精度10位

f2

float32单精度浮点数,32位,正负号1位,指数8位,精度23位f4
float64

单精度浮点数,64位,正负号1位,指数11位,精度52位

f8
complex64复数,实部 和虚部各用32位浮点数表示 c8
complex128

复数,实部和虚部各用64位浮点数表示

c16
object_Python对象O
string_字符串S
unicode_unicode类型U

2.数据类型用dtype,数组类型用type

数据创建时指定和查询数据类型都用dtype

3.修改数据类型用astype

astype不改变原数组数据的类型

f=np.array([1,2,3,4],dtype='int32')
print(f,f.dtype,type(f))
#修改数据类型
g=f.astype('int64')
print("g.dtype:",g.dtype)
print("f.dtype:",f.dtype)

输出:

[1 2 3 4] int32 <class 'numpy.ndarray'>
g.dtype: int64
f.dtype: int32

三.多维数组

1.数组维度

2.数组形状

3.数组元素个数及所占内存

数组维度用ndim

查询数组形状用shape,改变数组形状用reshape,reshape不改变原数组形状,reshape改变形状时,表示形状的数要用括号括起来。如:reshape((3,2))

数组扁平化,即将多维数组转化为一维数组,用flatten函数,不改变原数组形状

查看数组元素个数用size,每个元素所占内存用itemsize

#查看数组维度
a1=np.array([[1,2,3],[4,5,6]])
print(a)
print("a1.ndim:",a1.ndim)

#查询数组形状
print(a1.shape)#a1是2行3列的数组

#改变数组形状
b1=a1.reshape(3,2)#b1是3行2列的数组
print(b1)
print(a1)

#多维数组的扁平化
c1=b1.flatten()
print(c1)
print(b1)

print(c1.size)#数组元素个数,用size
print(c1.itemsize)#每个元素所占内存

输出:

[[1 2 3]
 [4 5 6]]
a1.ndim: 2
(2, 3)
[[1 2]
 [3 4]
 [5 6]]
[[1 2 3]
 [4 5 6]]
[1 2 3 4 5 6]
[[1 2]
 [3 4]
 [5 6]]
6
4

四.数组的索引、切片和替换

1.索引和切片

(1).一维数组

与Python列表的操作方法基本一致

a=np.arange(10)
print(a)
#索引
print(a[3])
print(a[-1])
#切片
print(a[:4])#前闭后开
#步长
print(a[::3])

(2).多维数组

通过中括号进行索引,在中括号中使用逗号分隔,逗号前是行,逗号后是列,如果多维数组的索引中只有一个值,则这个值表示行

a1=np.random.randint(0,10,size=(4,6))
print(a1)
print(a1[0])#获取第一行元素
print(a1[1:4])#第一、二、三行元素
print(a1[1,2])#第一行第二列

#[[],[]]第一个中括号是表示行,第二个中括号表示列
print(a1[[1,2],[3,4]])#第一行第三列,第二行第四列,记得要用中括号
print(a1[:,1])#第一列全部数据
print(a1[:,[2,3]])#第二列、第三列全部数据

输出:

[[3 5 9 4 6 0]
 [5 8 3 0 9 8]
 [1 8 2 7 2 5]
 [2 6 6 3 7 4]]
[3 5 9 4 6 0]
[[5 8 3 0 9 8]
 [1 8 2 7 2 5]
 [2 6 6 3 7 4]]
[[5 9]
 [8 3]
 [8 2]
 [6 6]]
3
[0 2]
[5 8 8 6]
[[9 4]
 [3 0]
 [2 7]
 [6 3]]

注意:特例布尔索引

| 表示或,&表示且

a2=np.arange(24).reshape((4,6))
print("a2:\n",a2)
print("a2中元素值小于10的元素:\n",a2[a2<10])
#当提取条件为多个时,要用括号括起来
print("a2中元素值小于5或大于10的元素:\n",a2[(a2<5)|(a2>10)])

输出:

a2:
 [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
a2中元素值小于10的元素:
 [0 1 2 3 4 5 6 7 8 9]
a2中元素值小于5或大于10的元素:
 [ 0  1  2  3  4 11 12 13 14 15 16 17 18 19 20 21 22 23]

2.替换

(1).和Python的列表一样,用索引

(2)用布尔索引

(3)用函数where,where(condition,a,b):符合条件condition的元素用a替换,其余的用b替换

a3=np.random.randint(10,size=(3,5))
print(a3)
#直接用索引替换
a3[2,3]=9
print(a3)
#利用布尔索引进行值的替换
a3[a3<4]=1#将小于5的值全部替换为1
print(a3)
#用函数where替换
result=np.where(a3<5,0,1)#将a3中小于5的元素换为0,其余的换为1
print(result)

五.数组的运算

1.数组与数字的运算

2.数组与数组运算(形状相同的数组、形状不同的数组)

1.数组与数字的运算

a1=np.random.random(size=(2,3))
print("a1:\n",a1)
print("a1*2:\n",a1*2)#每个元素都乘2
print("每个元素保留两位小数:\n",a1.round(2))#每个元素保留两位小数,round()不改变原数组

输出:

a1:
 [[0.59426871 0.81899562 0.34073919]
 [0.78663529 0.0771657  0.93731944]]
a1*2:
 [[1.18853742 1.63799124 0.68147838]
 [1.57327059 0.15433141 1.87463889]]
每个元素保留两位小数:
 [[0.59 0.82 0.34]
 [0.79 0.08 0.94]]

2.数组与数组运算

(1)形状相同的数组进行运算

a2=np.random.randint(1,10,size=(2,3))
print("a2:\n",a2)
print("a1+a2:\n",a1+a2)

输出:

a2:
 [[1 4 1]
 [4 8 3]]
a1+a2:
 [[1.59426871 4.81899562 1.34073919]
 [4.78663529 8.0771657  3.93731944]]

(2)形状不同且不满足数组广播机制

#形状不一致且不满足数组广播机制的数组不能相加减
a3=np.random.randint(1,5,size=(3,3))
a2+a3

#形状不一致但满足数组广播机制可以相加减
a4=np.random.randint(0,6,size=(2,1))#行数一样,列数为1
print("a4:\n",a4)
print("a4+a1:\n",a1+a4)
a5=np.random.randint(0,5,size=(1,3))#列数一样,行数为1
print("a5:\n",a5)
print("a5+a1:\n",a5+a1)

输出:

a2+a3报错:operands could not be broadcast together with shapes (2,3) (3,3)

a4:
 [[5]
 [3]]
a4+a1:
 [[5.59426871 5.81899562 5.34073919]
 [3.78663529 3.0771657  3.93731944]]
a5:
 [[2 0 0]]
a5+a1:
 [[2.59426871 0.81899562 0.34073919]
 [2.78663529 0.0771657  0.93731944]]

六.对数组形状的操作

1.改变形状reshape与重塑形状resize

2.两种展平flatten和ravel

3.两种转置T和transpose

4.数组的叠加

5.数组的切割

 1.reshape和resize

reshape只是将数组形状改变,然后返回改变后的数组,不改变原数组形状

resize是将数组转化成指定的形状,改变原数组形状

a1=np.random.randint(0,10,size=(3,5))
a2=a1.reshape((5,3))
print("a2:\n",a2)
print("a1:\n",a1)
a1.resize((5,3))
print("a1:\n",a1)

输出:

a2:
 [[4 4 9]
 [2 5 1]
 [9 7 8]
 [9 7 0]
 [8 0 5]]
a1:
 [[4 4 9 2 5]
 [1 9 7 8 9]
 [7 0 8 0 5]]
a1:
 [[4 4 9]
 [2 5 1]
 [9 7 8]
 [9 7 0]
 [8 0 5]]

2.展平:将多维数组转换为一维数组

flatten 和 ravel都不会改变原数组形状,但是还是不同

flatten将修改后的数组拷贝回去,深拷贝,改变拷贝的数组元素不改变原数组元素

ravel只是将视图引用回去,是一种浅拷贝,修改数组元素会改变原数组元素

a3=np.random.randint(0,10,size=(3,4))
a4=a3.flatten()
a4[1]=15
print("a4:\n",a4)
print("a3:\n",a3)
a5=a3.ravel()
a5[1]=15
print("a5:\n",a5)
print("a3:\n",a3)

输出:

a4:
 [ 6 15  8  7  8  8  7  5  7  0  3  6]
a3:
 [[6 6 8 7]
 [8 8 7 5]
 [7 0 3 6]]
a5:
 [ 6 15  8  7  8  8  7  5  7  0  3  6]
a3:
 [[ 6 15  8  7]
 [ 8  8  7  5]
 [ 7  0  3  6]]

3.两种转置

transpose函数返回的是一个view,所以对返回值进行修改会影响到原数组

矩阵相乘用dot

t1=np.random.randint(0,10,size=(3,4))
print("t1:\n",t1)
print(t1.T)
#矩阵相乘
print("t1*t1.T:\n",t1.dot(t1.T))
t2=t1.transpose()
t2[1,2]=15
print(t2)
print(t1)

输出:

t1:
 [[6 9 9 3]
 [0 2 5 9]
 [6 7 7 0]]
t1的转置:
 [[6 0 6]
 [9 2 7]
 [9 5 7]
 [3 9 0]]
t1*t1.T:
 [[207  90 162]
 [ 90 110  49]
 [162  49 134]]
t2:
 [[ 6  0  6]
 [ 9  2 15]
 [ 9  5  7]
 [ 3  9  0]]
t1:
 [[ 6  9  9  3]
 [ 0  2  5  9]
 [ 6 15  7  0]]

4.数组的叠加

方法一:vstack表示垂直方向上叠加(列数必须一致),hstack表示水平方向上叠加(行数必须一致)

方法二:concatenate通过axis控制是垂直方向叠加(axis=0)还是水平方向叠加(axis=1),运用这个函数时注意要两个参与运算的数组要用 [] 括起来

垂直方向叠加:

vstack1=np.random.randint(0,10,size=(3,4))
print("vstack1:\n",vstack1)
vstack2=np.random.randint(0,10,size=(2,4))
print("vstack2:\n",vstack2)
vstack3=np.vstack([vstack1,vstack2])#注意要两个参与运算的数组要用[]括起来
print("vstack3:\n",vstack3)
vstack4=np.concatenate([vstack1,vstack2],axis=0)
print("vstack4:\n",vstack4)

输出:

vstack1:
 [[8 8 2 6]
 [4 7 4 6]
 [8 6 5 9]]
vstack2:
 [[2 5 6 6]
 [5 2 2 2]]
vstack3:
 [[8 8 2 6]
 [4 7 4 6]
 [8 6 5 9]
 [2 5 6 6]
 [5 2 2 2]]
vstack4:
 [[8 8 2 6]
 [4 7 4 6]
 [8 6 5 9]
 [2 5 6 6]
 [5 2 2 2]]

水平方向叠加:

hstack1=np.random.randint(0,10,size=(2,3))
print("hstack1:\n",hstack1)
hstack2=np.random.randint(0,10,size=(2,4))
print("hstack2:\n",hstack2)
hstack3=np.hstack([hstack1,hstack2])#注意要两个参与运算的数组要用[]括起来
print("hstack3:\n",hstack3)
hstack4=np.concatenate([hstack1,hstack2],axis=1)
print("hhtack4:\n",hstack4)

输出:

hstack1:
 [[2 9 8]
 [0 9 6]]
hstack2:
 [[4 8 6 5]
 [8 6 3 1]]
hstack3:
 [[2 9 8 4 8 6 5]
 [0 9 6 8 6 3 1]]
hhtack4:
 [[2 9 8 4 8 6 5]
 [0 9 6 8 6 3 1]]

5.数组的切割

按列切分(hsplit)、按行切分(vsplit),均不改变原数组形状

切分(split):通过控制axis的值决定是按行(axis=0)还是按列切分(axis=1)

如果只有一个参数n,则表示切割成n份,如果有多个参数(这n个参数要用括号括起来),则表示在每个参数前切割一次。

按列切分:

hs1=np.random.randint(0,10,size=(3,4))
print("hs1:\n",hs1)

#不改变原数组形状
print("按列切割为两份:\n",np.hsplit(hs1,2))#按列切分为2份
print("hs1:\n",hs1)

#按列切分为多个数
print("在第一列、第二列前分别切分:\n",np.hsplit(hs1,(1,2)))#在第一列前、第二列前分别切分一次

#均分为4份
print(np.split(hs1,4,axis=1))

#在第一列、第二列前分别切分一次
print(np.split(hs1,(1,2),axis=1))

输出:

hs1:
 [[4 8 2 7]
 [5 2 4 8]
 [3 2 8 9]]
按列切割为两份:
 [array([[4, 8],
       [5, 2],
       [3, 2]]), array([[2, 7],
       [4, 8],
       [8, 9]])]
hs1:
 [[4 8 2 7]
 [5 2 4 8]
 [3 2 8 9]]
在第一列、第二列前分别切分:
 [array([[4],
       [5],
       [3]]), array([[8],
       [2],
       [2]]), array([[2, 7],
       [4, 8],
       [8, 9]])]
均分为4份:
 [array([[4],
       [5],
       [3]]), array([[8],
       [2],
       [2]]), array([[2],
       [4],
       [8]]), array([[7],
       [8],
       [9]])]
在第一列、第二列前切分:
 [array([[4],
       [5],
       [3]]), array([[8],
       [2],
       [2]]), array([[2, 7],
       [4, 8],
       [8, 9]])]

按行切分:

vs1=np.random.randint(0,10,size=(4,3))
print("vs1:\n",vs1)

print("按行切分为两份:\n",np.vsplit(vs1,2))
print("在第一行、第二行前切分:\n",np.vsplit(vs1,(1,2)))

#切分为4份
print("均分为4份:\n",np.split(vs1,4,axis=0))
#在第一行、第二行前分别切分一次
print("在第一行、第二行前切分:\n",np.split(vs1,(1,2),axis=0))

输出:

vs1:
 [[6 0 7]
 [4 2 8]
 [4 3 4]
 [0 0 9]]
按行切分为两份:
 [array([[6, 0, 7],
       [4, 2, 8]]), array([[4, 3, 4],
       [0, 0, 9]])]
在第一行、第二行前切分:
 [array([[6, 0, 7]]), array([[4, 2, 8]]), array([[4, 3, 4],
       [0, 0, 9]])]
均分为4份:
 [array([[6, 0, 7]]), array([[4, 2, 8]]), array([[4, 3, 4]]), array([[0, 0, 9]])]
在第一行、第二行前切分:
 [array([[6, 0, 7]]), array([[4, 2, 8]]), array([[4, 3, 4],
       [0, 0, 9]])]

七.拷贝

1.不拷贝

2.浅拷贝

3.深拷贝

 1.不拷贝:简单的复制操作,不进行拷贝

a=np.arange(0,10)
b=a
print(b is a)

输出:

True

2.浅拷贝(或者叫视图(View)):即两个变量所指向的内存空间是一致的,改变一个变量其中的值,另外一个也会变

a=np.arange(0,5)
print("a:\n",a)
b=a.view()
#判断a、b是否相等
print("b=a:",b is a)
#修改b的值,a的值也会变
b[1]=8
print("a:",a)

输出:

a:
 [0 1 2 3 4]
b=a: False
a: [0 8 2 3 4]

3.深拷贝:将数据复制一份到另外一个内存空间去,这样形成两个完全不同的变量

a=np.arange(5)
print("a:\n",a)
b=a.copy()
print("b=a:",b is a)
b[1]=9
print("a:",a,"b:",b)

输出:

a:
 [0 1 2 3 4]
b=a: False
a: [0 1 2 3 4] b: [0 9 2 3 4]

八.文件存储相关的操作

1.保存文件:savetxt

2.读取文件:loadtxt

 1.保存文件

savetxt(frame,array,fmt,delimiter,header,footer,comments)

frame:要存为的文件名(可以用绝对地址),array:要存入的数组,fmt:写入文件的数据格式,

delimiter:分隔字符串,默认是空格,header(可选):添加的表头,footer(可选):写在文件最

末尾的字符串,comments:添加在header之前的字符串,encoding:编码格式

注意:header、footer的字符串中的标点符号也要用英文的

scores=np.random.randint(0,100,size=(10,2))
np.savetxt("scores.csv",scores,fmt="%.2f",delimiter=",",header="语文,英语",comments="")

 2.读取文件

 np.loadtxt(frame,dtype,delimiter,skiprows,usecols,unpack)

frame:要读取的文件名,dtype:数据类型(可选),delimiter:分隔字符串,默认是空格,skiprows

跳过前n行,usecols:读取指定列,用元组形式表示,unpack:如果为True,则读取出来的数组是转

置后的

b = np.loadtxt("scores.csv",dtype="i1",delimiter=",",skiprows=1)
print(b)

九.两个特殊值和处理缺失值

1.NAN和INF

2.处理缺失值

 1.NAN和INF

NAN:Not A Number,不是一个数字,但是是浮点型的,且NAN !=NAN,NAN与任何值运算结果都是NAN

INF:Infinity,代表正无穷大,也是浮点型

2.处理缺失值

(1)删除缺失值

a=np.arange(0,12).reshape((3,4))
a=a.astype("float")#因为NAN 是float型,所以要将数组类型改为float
a[1,2]=np.NAN
print("a:\n",a)

#删除值
#删除后会变成一维数组,但不改变原数组
print("删除值后:\n",a[~np.isnan(a)])
print("a:\n",a)

#删除行
line=np.where(np.isnan(a))[0]#找出所有含NAN的行,取第一行
print("删除行后:\n",np.delete(a,line,axis=0))#按行删掉,axis=0表示按行

 输出:

a:
 [[ 0.  1.  2.  3.]
 [ 4.  5. nan  7.]
 [ 8.  9. 10. 11.]]
删除值后:
 [ 0.  1.  2.  3.  4.  5.  7.  8.  9. 10. 11.]
a:
 [[ 0.  1.  2.  3.]
 [ 4.  5. nan  7.]
 [ 8.  9. 10. 11.]]
删除行后:
 [[ 0.  1.  2.  3.]
 [ 8.  9. 10. 11.]]

(2)替换值

与Python列表相似

十.axis的理解

n维数组就有n个[],一般来说,最外面的括号axis=0,然后括号依次往内,axis就依次加1

如下:

  但delete是个例外

delete的axis=0表示行

十一.random模块

1.随机数种子seed

np.random.seed(1)#设置随机数种子
a=np.random.random()
print(a)

输出:

0.417022004702574

2.random.rand():

生成一个[0,1)之间的数组,形状由参数指定。如果没有指定,则返回一个随机值

print(np.random.rand())
print(np.random.rand(2,5))

输出:

0.6199065909147441
[[0.27723228 0.2796812  0.8439842  0.36089565 0.76347647]
 [0.86237465 0.9138966  0.43732757 0.09929137 0.76975213]]

3.np.random.randn(n,m):

生成n行m列的数组,数组的值为均值为0,标准差为1的标准正态分布的数

a=np.random.randn(2,3)
print(a)

输出:

[[ 0.44784896  0.41497648 -1.33217972]
 [ 1.47191205 -0.23822925  0.1336013 ]]

4.random.randint()

生成指定范围内的随机数,并通过size控制数组形状

a=np.random.randint(0,9,size=(3,3))
print(a)

输出:

[[0 3 1]
 [5 5 4]
 [6 4 8]]

5.random.choice

从一个数组中随机采样,也可以从指定区间采样

注意:要求被采取的数组必须是一维数组,所以要先将多维数组扁平化

a=np.random.randint(0,9,size=(3,3))
print(a)
#直接采取三个数
print(np.random.choice(a.flatten(),3))
#随机采取数,组成新的三行四列数组
print(np.random.choice(a.flatten(),size=(3,4)))
#从指定的值[0,20)中随机抽取5个数
print(np.random.choice(20,5))

输出:

a:

[[5 7 8]
 [2 5 8]
 [1 5 8]]

随机抽取的三个数:
[5 1 5]

新组成的数组:
[[5 8 5 5]
 [5 2 5 2]
 [8 5 2 8]]

随机抽取的指定范围内的5个数组成的数组:
[15  6  7 13 16]

6.random.shuffle

直接打乱原数组顺序无返回值,直接打乱原数组顺序

a=np.arange(10)
print(a)
np.random.shuffle(a)
print(a)

输出:

[0 1 2 3 4 5 6 7 8 9]
[1 5 2 8 3 9 7 4 6 0]

十二.常用函数

1.单个值运算

一元函数
函数描述
np.abs(x)x的绝对值
np.sqrt(x)对x开方
np.square(x)x的平方
np.exp(x)计算指数e^x

np.log(x)、np.log10(x)、

np.log2(x)、np.log1p(x)

以e、10、2、(1+x)为底,x的对数
np.sign

将数组中的值标签化(统一化),大于0的变为1,

等于0的变为0,小于0的变为-1

np.ceil向着无穷大的方向取整,6.1变为7,-6.1变为-6
np.floor向着负无穷大取整,6.1变为6,-6.1变为-7
np.rint,np.round四舍五入
np.modf

将整数和小数分开形成两个数组

要求:传入的必须是数组,

这里的数组元素类型都是float型

np.isnan,np.isinf

判断是否为NAN、INF

np.cos,no.cosh,np.sin,np.sinh

np.tan,np.tanh

三角函数
np.arccos,np.arcsin,np.arctan

反三角函数

2.两个值运算

函数描述
np.add加法
np.subtract减法
np.negative取负数,如:6变为-6
np.multiply乘法
np.divide除法,相当于/,如:3/2=1
np.floor_divide地板除
np.mod取余数,%

3.数组相关的运算

函数描述
np.sum

计算元素的和

可以通过控制axis指定轴

np.prod计算元素的积
np.mean均值
np.std标准差
np.var方差
np.min,np.max找到最小值、最大值
np.argmin,np.argmax最小值的索引,最大值的索引
np.median元素中位数

注意:np.median会先将数组排序,在找中位数

4.排序

函数描述
np.sort

排序,默认是使用最后一个轴排序

可以通过控制axis改变指定的轴

默认是升序,要降序,则在数组前加负号-

np.argsort返回排序后的下标值

5.其他常用函数

函数描述
np.apply_along_axis沿某个轴执行指定的函数
np.linspace(n,m,q)将区间(n,m)均分为q份
np.unique(l)

过滤掉数组l中的重复元素,只保留一次

使数组有唯一性

部分代码:

 部分内容来源于网络,仅供交流学习。如有侵权,请联系删除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值