@[python numpy学习笔记]
python numpy学习
本文章为我个人在学习python数据分析中numpy使用的一些学习心得
1.Numpy简介
NumPy是一个Python包,它是一个由多维数组对象和用于处理数组的例程集合组成的库。
通过Numpy,可以进行如下操作:
1.数组的算数和逻辑运算。
2.傅立叶变换和用于图形操作的例程。
3.与线性代数有关的操作,NumPy 拥有线性代数和随机数生成的内置函数。
现在一般通过Numpy、Scipy(Scientific Python)和Matplotlib(绘图库)结合来替代MatLab,是一个流行的技术计算平台。
2.数组创建
ndarray是一个多维数组对象,由两部分组成:
- 实际的数据·
- 描述这些数据的元数据(数据维度(shape),数据类型(dtype)等)
下面我们看一些简单例子:
import numpy as np
ar=np.array([1,2,3,4])#创建一维数组
print(ar)
[1 2 3 4]
import numpy as np
ar=np.array([[1,2,3,4],[4,5,6,7]])#创建多维数组
print(ar)
创建零数组:
import numpy as np
a =np.zeros((3,4))
print(a)
####
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
创建一矩阵:
import numpy as np
a =np.ones((2,3,4),dtype=np.int16)
print(a)
####
[[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
创建单位数组:
import numpy as np
a =np.eye(3)
print(a)
####
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
创建长度自定义的一维数组:
import numpy as np
a =np.arange(6)
print(a)
####
[0 1 2 3 4 5]
创建制定间隔内均匀间隔的数组:
import numpy as np
a =np.linspace(1,10,20)
print(a)
####
[ 1. 1.47368421 1.94736842 2.42105263 2.89473684 3.36842105
3.84210526 4.31578947 4.78947368 5.26315789 5.73684211 6.21052632
6.68421053 7.15789474 7.63157895 8.10526316 8.57894737 9.05263158
9.52631579 10. ]
生成随机数:
import numpy as np
print(np.random.randint(1,10))#产生1到10的一个整数型随机数
print(np.random.random())#产生0到1之间的随机浮点数
print(np.random.uniform(1.1,5.4))#产生1.1到5.4之间的随机浮点数,区间可以不是整数
3.数组操作
ndarray.shape:这一数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。
import numpy
a = numpy.array([[1,2,3],[4,5,6]])
print(a.shape)
#####
(2, 3)
调整数组大小:
import numpy
a = numpy.array([[1, 2, 3], [4, 5, 6]])
a.shape = (3, 2)
print(a)
####
[[1 2]
[3 4]
[5 6]]
import numpy
a = numpy.array([[1,2,3],[4,5,6]]).reshape(3,2)
print(a)
####
[[1 2]
[3 4]
[5 6]]
数据类型对象dtype
import numpy as np
x = [1, 2, 3]
a = np.asarray(x,dtype=float)
print(a)
####
[1. 2. 3.]
对数组进行索引和切片:
一维数组的索引和切片:
import numpy
a = numpy.arange(10)
print(a)
print(a[1:8])
print(a[:8:3])
print(a[::-1])
####
[0 1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6 7]
[0 3 6]
[9 8 7 6 5 4 3 2 1 0]
多维数组的索引和切片:
import numpy as np
a = np.arange(16).reshape(2,4,2)
print(a)
print(a[0,0,0])
print(a[1,3,1])
print(a[:,0,0])
print(a[0])
print(a[0,:,:])
print(a[0,...])
print(a[0, :, 1])
print(a[0, :, -1])
print(a[0, ::-1, -1])
print(a[0, ::2, -1])
print(a[::-1])
####
[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]
[[ 8 9]
[10 11]
[12 13]
[14 15]]]
0
15
[0 8]
[[0 1]
[2 3]
[4 5]
[6 7]]
[[0 1]
[2 3]
[4 5]
[6 7]]
[[0 1]
[2 3]
[4 5]
[6 7]]
[1 3 5 7]
[1 3 5 7]
[7 5 3 1]
[1 5]
[[[ 8 9]
[10 11]
[12 13]
[14 15]]
[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]]
对数组进行排序:
import numpy as np
a = np.random.rand(16).reshape(4,4)
print(a)
print(np.sort(a))
####
[[0.64949845 0.37335864 0.44213273 0.12334263]
[0.87506032 0.70278265 0.32635172 0.14085263]
[0.6327005 0.23237967 0.13929995 0.8391852 ]
[0.70352121 0.46165929 0.07995412 0.69004253]]
[[0.12334263 0.37335864 0.44213273 0.64949845]
[0.14085263 0.32635172 0.70278265 0.87506032]
[0.13929995 0.23237967 0.6327005 0.8391852 ]
[0.07995412 0.46165929 0.69004253 0.70352121]]
4.数组运算
import numpy as np
a = np.array([[2,3,1],[4,6,5],[7,9,8]])
print(a)
####
[[2 3 1]
[4 6 5]
[7 9 8]]
print(np.max(a))#返回数组中最大元素
####
9
print(np.min(a))#返回数组中最小元素
####
1
print(np.argmax(a))#返回数组中最大元素的索引
####
7
print(np.argmin(a))#返回数组中最小元素的索引
####
2
print(np.sum(a))#对数组a中所有元素求和
####
45
print(np.sum(a,axis=1))#对数组a按行求和
####
[ 6 15 24]
print(np.sum(a,axis=0))#对数组a按列求和
####
[13 18 14]
print(np.mean(a))#对数组a所有元素求算数平均值
####
5.0
5.数组元素运算
import numpy as np
a = np.array([[2,3,1],[4,6,5],[7,9,8]])
print(a)
####
[[2 3 1]
[4 6 5]
[7 9 8]]
print(np.add(a,3))#数组a的每个元素加上3
####
[[ 5 6 4]
[ 7 9 8]
[10 12 11]]
print(np.subtract(a,1))#数组a的每个元素减去1
####
[[1 2 0]
[3 5 4]
[6 8 7]]
print(np.multiply(a,2))#数组a的每个元素乘以2
####
[[ 4 6 2]
[ 8 12 10]
[14 18 16]]
print(np.divide(a,2))#数组a的每个元素除以2
####
[[1. 1.5 0.5]
[2. 3. 2.5]
[3.5 4.5 4. ]]
print(np.mod(a,3))#数组a的每个元素对3求余
####
[[2 0 1]
[1 0 2]
[1 0 2]]
print(np.power(a,2))#数组a每个元素进行2次乘方
####
[[ 4 9 1]
[16 36 25]
[49 81 64]]