Numpy学习总结

Numpy

  • 首先要安装numpy,这里我们下载了anaconda,便于调用,创建一个二维数组,类型为float
import numpy as np
array=np.array([[1,2,3],[4,5,6]],dtype=np.float)
print(array)
print('维数:',array.ndim)
print('形状:',array.shape)
print('元素个数:',array.size)

[[1. 2. 3.]
[4. 5. 6.]]
维数: 2
形状: (2, 3)
元素个数: 6


  • 生成空数组,每个元素趋近于0
e=np.empty((3,4))
print(e)

[[6.23042070e-307 3.56043053e-307 1.60219306e-306 7.56571288e-307]
[1.89146896e-307 1.37961302e-306 1.05699242e-307 8.01097889e-307]
[1.24610994e-306 1.37962456e-306 1.42410974e-306 1.20372323e+021]]


  • 生成零数组,每个元素为0
z=np.zeros((3,4))
print(z)

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]


  • 生成元素为1的数组
o=np.ones((3,4))
print(o)

[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]


  • 用np.arange()生成数组,reshape()表示重新定义数组形状
ar=np.arange(9,19)
print(ar)
arr=np.arange(9).reshape(3,3)
print(arr)

[ 9 10 11 12 13 14 15 16 17 18]

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


  • np.linspace()可以指定范围生成指定个数的数组
lins=np.linspace(1,10,5)
print(lins)
linsp=np.linspace(1,10,6).reshape(2,3)
print(linsp)

[ 1. 3.25 5.5 7.75 10. ]
[[ 1. 2.8 4.6]
[ 6.4 8.2 10. ]]


  • 矩阵运算(加减乘)
a=np.array([1,2,3,4]).reshape(2,2)
b=np.arange(4).reshape(2,2)
c=a+b
d=a-b
e=a*b#对应数相乘
print('a:{},b:{},+:{},-:{},*{}'.format(a,b,c,d,e))
print(np.dot(a,b))#矩阵乘法

  • 对numpy进行三角函数运算and对axis维度的理解
    理解:若axis=i ,则numpy沿着第i个下标变化的方向进行操作
import math
print(np.sin(math.pi/2))#1.0
random1=np.random.rand(2,4)
print(random1)
print(np.sum(random1,axis=1))#沿着 列(cols) 的方向跨 行
print(np.sum(random1,axis=0))#沿着 行(rows) 的方向跨 列
print(np.min(random1))
print(np.max(random1))

1.0
[[0.36487089 0.97086575 0.740055 0.52626264]
[0.38152614 0.03620161 0.25908531 0.84605217]]

[2.60205428 1.52286523]

[0.74639703 1.00706736 0.99914031 1.37231481]

0.03620161017618917

0.9708657504267317


  • 一些基本操作
A=np.arange(2,14).reshape(3,4)
print(A)
print(np.argmin(A))#返回最小值的索引
print(np.argmax(A))#返回最大值的索引
print(np.mean(A))#平均值
print(np.average(A))#平均值
print(np.median(A))#中位数
print(np.cumsum(A))#类似前n项和
print(np.diff(A))#每两个做差

[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
0
11
7.5
7.5
7.5
[ 2 5 9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
[1 1 1]
[1 1 1]]


B=np.arange(9).reshape(3,3)
print(B)
print(np.nonzero(B))#返回非零数的索引
print(np.transpose(B))#转置

[[0 1 2]
[3 4 5]
[6 7 8]]
(array([0, 0, 1, 1, 1, 2, 2, 2], dtype=int64), array([1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
[[0 3 6]
[1 4 7]
[2 5 8]]


C=np.array([[1,3,2],[9,8,7],[5,3,4]])
print(np.sort(C))#对每行排序,这里axis默认为1

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


aa=np.arange(12).reshape(3,4)
print(aa)
print(np.split(aa,2,axis=1))#等量分割
print(np.array_split(aa,3,axis=1))#不等量分割

[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]

上一篇:python.day05


下一篇:222. 完全二叉树的节点个数