1.Nump属性——–
# ndim:维度
# shape:行数和列数
# size:元素个数
import numpy as np
array=np.array([[1,2,3],[2,3,4]])#列表转化为矩阵
print(array)
print('number of dim:',array.ndim)
print('shape:',array.shape)
print('size:',array.size)
2.numpy创建array
关键字
array:创建数组
dtype:指定数据类型
zeros:创建数据全为0
ones:创建数据全为1
empty:创建数据接近0
arrange:按指定范围创建数据
linspace:创建线段
#创建数组
a=np.array([2,23,4])
print(a)
#指定数据类型
a=np.array([2,23,4],dtype=np.int)
print(a.dtype)
a=np.array([2],dtype=np.int32)
print(a.dtype)
a=np.array(3,dtype=np.float)
print(a.dtype)
a=np.array(2,dtype=np.float32)
print(a.dtype)
#创建特定数据
a=np.array([[2,23,4],[2,23,4]]) # 2d 矩阵 2行3列
print(a)
a=np.zeros((3,4)) # 数据全为0,3行4列
print(a)
a=np.ones((3,4),dtype=int) # 数据为1,3行4列
print(a)
a=np.empty((3,4)) # 数据为empty,3行4列,创建全空数组, 其实每个值都是接近于零的数
print(a)
#用 arange 创建连续数组
a=np.arange(10,20,2) # 10-19 的数据,2步长
print(a)
#使用 reshape 改变数据的形状
a=np.arange(12).reshape((3,4)) # 3行4列,0到11
print(a)
#用 linspace 创建线段型数据:
a = np.linspace(1,10,20) # 开始端1,结束端10,且分割成20个数据,生成线段
print(a)
a=np.linspace(1,10,10).reshape(2,5)
print(a)
3.numpy运算
#numpy基础运算
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4) #array([0,1,2,3])
c=a-b #[10 19 28 37]
c=a+b #[10 21 32 43]
c=a*b #[ 0 20 60 120] 对象元素相乘
#幂的运算
c=b**3 #[ 0 1 8 27]
#Numpy中含有很多数学函数,如三角函数
c=10*np.sin(a) #[-5.44021111 9.12945251 -9.88031624 7.4511316 ]
#print函数进行一些修改,进行逻辑判断
print(b<3) #[ True True True False]
print(b==1) #[False True False False] 判断是否相等,用‘==’不是‘=’
#多行多维矩阵运算
a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))
print(a)
#[[1 1]
# [0 1]]
print(b)
#[[0 1]
# [2 3]]
#矩阵的标准乘法
c_dot=np.dot(a,b)
print(c_dot)
# array([[2, 4],
# [2, 3]])
#另一种dot表示方式
c_dot_2=a.dot(b)
print(c_dot_2)
# array([[2, 4],
# [2, 3]])
#sum(),min(),max()
import numpy as np
a=np.random.random((2,4)) #生成2行4列的矩阵,每个元素为0~1之间随机数
print(a)
print('a的sum=',np.sum(a))
print('a的min=',np.min(a))
print('a的max=',np.max(c))
[[ 0.7564823 0.14431434 0.63184266 0.40914991]
[ 0.13402718 0.2912754 0.11097813 0.37879589]]
a的sum= 2.85686579992
a的min= 0.1109781307
a的max= 9.12945250728
#按行或者按列运算 axis=0按列查找,axis=1按行查找
print('a=',a)
print('sum=',np.sum(a,axis=1))
print('min=',np.min(a,axis=0))
print('max=',np.max(a,axis=1))
a= [[ 0.7564823 0.14431434 0.63184266 0.40914991]
[ 0.13402718 0.2912754 0.11097813 0.37879589]]
sum= [ 1.9417892 0.9150766]
min= [ 0.13402718 0.14431434 0.11097813 0.37879589]
max= [ 0.7564823 0.37879589]
import numpy as np
A=np.arange(2,14).reshape((3,4))
print(np.argmin(A)) #0 #argmin最小元素的索引,argmax最大元素的索引
print(np.argmax(A)) #11
print(np.mean(A)) #7.5 求均值
print(np.average(A)) #7.5 求均值
print(A.mean()) #7.5 求均值另一种方式
print(np.median(A)) #7.5 求中位数
print(np.cumsum(A)) #[ 2 5 9 14 20 27 35 44 54 65 77 90] 累加函数
print(np.diff(A)) # [[1 1 1]
# [1 1 1]
# [1 1 1]] diff该函数计算的每一行中后一项与前一项之差。故一个3行4列矩阵通过函数计算得到的矩阵便是3行3列的矩阵
print(np.nonzero(A)) #(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))
import numpy as np
A=np.arange(14,2,-1).reshape((3,4))
print(A)
print('对每行从小到大排序:')
print(np.sort(A))
print('对每列从小到大排序:')
print(np.sort(A,axis=0))
#矩阵转置
print('转置:')
print(np.transpose(A))
print(A.T)
#clip()
print('clip函数:')
print(A)
print(np.clip(A,5,9)) #clip(array,array_min,array_max),矩阵中比array_max都大的值改变成array_max,比array_min小的值都改变成array_min
输出:
矩阵A:
[[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
对每行从小到大排序:
[[11 12 13 14]
[ 7 8 9 10]
[ 3 4 5 6]]
对每列从小到大排序:
[[ 6 5 4 3]
[10 9 8 7]
[14 13 12 11]]
转置:
[[14 10 6]
[13 9 5]
[12 8 4]
[11 7 3]]
[[14 10 6]
[13 9 5]
[12 8 4]
[11 7 3]]
clip函数:
[[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
[[9 9 9 9]
[9 9 8 7]
[6 5 5 5]]