数组名两大写在Spyder里不显示
1:创建数组:
利用array()函数创建数组
import numpy as np
d=np.array(列表,元祖,嵌套列表,嵌套数组,等给定的数据结构转化为数组)
若需要转化的为二维数组以及以上,那么需要有[ 中括号]将他们括起来
利用内置函数创建数组
z1=np.ones((n,m)) #创建n行m列元素全为1的数组
z2=np.zeros((n,m)) #创建n行m列元素全为0的数组
z3=np.arange(a,b,c) #利用arange(a,b,c)创建以a为初始值,b-1为末值,c为步长 的一维数组
若需要转化的为二维数组以及以上,那么需要有(中括号)中括号将他们括起来
2:数组尺寸
通过shape属性可以返回数组的长度,如果是一维数组,则返回的元祖中仅仅一个元素,代表这个数组的长度。如果是二维数组,元祖中两个值,第一个值代表数组的行数,第二个值代表数组的列表。
d1=[1,2,3,4,5,6]
d2=[[1,2,3,4],[5,6,7,8]]
import numpy as np
d11=np.array(d1)
d22=np.array(d2)
s11=np.shape(d11)
s22=np.shape(d22)
数组进行重排,可以通过reshape()函数来实现
r=np.array(range(9)) #一维数组
r1=r.reshape((3,3)) #重排位3行3列
3:数组运算
数组的运算包括加、减、乘、除、乘方于运算,以及数组的数字函数运算。
import numpy as np
A=np.array([[1,2],[3,4]])
B=np.array([[5,6],[7,8]])
c1=A-B
c2=A+B
c3=A*B
c4=A/B
c5=A/3
c7=A**2
#数学运算
e1=np.sqrt(A) #取平方根
e2=np.abs([1,-2,-100]) #绝对值,列表里的值进行取绝对值
e3=np.cos([1,2,3]) #cos值
e4=np.sin(A) #sin值
e5=np.exp(A) #取指数函数值
4:数组切片
常见数组的切片方法
D【①,②】:①:为对D的行下标控制,不能超过最大行数;②:为对D的列下表进行控制,不能超过最大列数
1:数组无直接访问下标值的过程
B11=D[[2,3],[2,3]]
print(B11)
总结:
2:设置行号和列号同时加上【】,相对应输出值,中括号限制输出,输出前后对应位置,放入一个【】中
3:数据没有维度输出一列
4:冒号前后值取左不取右
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 26 15:23:53 2021
@author: Administrator
"""
import numpy as np
D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
#访问D中行为1,列为2的数据
#d1=D.index(1)没有下标访问的形式
B1=D[1,2]
#访问D中第1 ,3列数据
B2=D[:,[1,3]]
#访问D中第1,3行数据
B3=D[[1,3],:]
#取D中满足第0列大于5的所有列数据
C=D[D[:,0]>5,:]
#取D中满足第0列大于5的第1,2列数据
tt=[False,True,True,False]
#取D中满足第0中大于5的第2,3列数据
C1=D[D[:,0]>5,[2,3]]
C2=D[D[:,0]>5,2:4]
C3=D[D[:,0]>5,1:3]
D7=D[D[:,0]>5,tt]
TF=[True,False,True,False]
#取D中第0,3行的所有列数据,本质上行及控制为逻辑列表,去逻辑值为真
D1=D[TF,:]
#取出第一行
A=D[1]
A1=D[1,:]
#取出第一列
B=D[:,1]
B1=D[D[:,0]<=5,:]
#取出第0,3行的2,3列的元素
Dt4=[D[TF,2:4]]
#取出D中大于4的数据
Dt5=D[D>4]
#取中间几个元素,6,7,10,11
middle=D[1:3,1:3]
利用ix_()函数进行数组切片(大众的切片逻辑)
1:取相关行对应列的所有数值而不是单个
2:对应列标不用做取舍,只有在:的时候取左不取右
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 27 09:54:51 2021
@author: Administrator
"""
import numpy as np
D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
#取第1,2行,1,3列
D3=D[np.ix_([1,2],[1,3])]
#取0,1行,1,3列
D4=D[np.ix_(np.arange(2),[1,3])]
#取第一列小于11,列数为1,2行的所有元素
D6=D[np.ix_(D[:,1]<11,[1,2])]
#取第一列小于11,列数为2行的所有元素
D7=D[np.ix_(D[:,1]<11,[2])]
TF=[True,False,False,True]
D8=D[np.ix_(TF,[2])]
D9=D[np.ix_(TF,[1,3])]
5:数组连接:
数据处理,多个数据源的集成整合是经常发生的。数组间的集成与整合主要体现在数组间的连接,包括**水平hstack()和垂直vstack()**两种方式。
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 27 10:07:07 2021
@author: Administrator
"""
import numpy as np
a=np.array([[1,2],[3,4],[5,6]])
b=np.array([[7,8],[9,10],[11,12]])
c_s=np.hstack((a,b))
c_v=np.vstack((a,b))
#
d=np.array([[7,8],[9,10],[11,12],[13,14]])
#D_s=np.hstack((a,d))
D_v=np.vstack((a,d))
z=np.array([[7,8,0],[9,10,0],[11,12,13]])
D_s=np.hstack((a,z))
水平:
垂直:
垂直:只要行数相同,就可以进行垂直连接vstack(),列数相不相同无关
水平:只要行数相同,就可以进行水平连接hstack(),列数相不相同无关
6:数据存取
import numpy as np
A=np.array([[1,2],[3,4],[5,6]])
B=np.array([[7,8],[9,10],[11,12]])
C_s=np.hstack((A,B))
#C_s数据集保存为二进制数据文件data.npy
np.save('data',C_s)
V_s=np.load("data.npy")
7:数组形态变换
数组都不能改变值
reshape函数:用于改变数组形态:一维数组变多维数组
reval函数:多维数组变成一维数组
import numpy as np
arr=np.arange(12)
#reshape一维数组变多维
arr1=arr.reshape(2,6)
#ravel多维数组变一维
arr2=arr1.ravel()
8:数组排序与搜索
sort():从小到大的顺序排序
argmin():返回待搜索数组的最小值
argmax():返回待搜索数组的最大值
argmax(arr1,axis=0或axis=1)
axis=0:返回各列中最大值的索引值
axis=1:返回各行中最最大值的索引值
argmin(arr1,axis=0或axis=1)
axis=0:返回各列中最小值的索引值
axis=1:返回各行中最小值的索引值
9:矩阵与线性代数运算
1:创建Numpy矩阵
mat(),mtrix(),bamt()