numpy学习笔记
1. numpy概述(1)Numerical Python,数值的Python,补充了Python语言所欠缺的数值计算能力(2)是其他数据分析及机器学习库的底层库(3)完全标准C语言实现,运行效率充分优化(4)开源免费2. numpy的核心:多维数组1.代码简洁2. 底层实现3. numpy基础(1)ndarray数组(2)内存中的ndarray对象元数据实际数据(3)ndarray数组对象的特点(4)ndarray数组对象的创建1.np.array(任何可被解释为numpy数组的逻辑结构)2.np.arange(起始值(0),终止值,步长(1))3.np.zeros(数组元素个数,dtype='类型')4.np.ones(数组元素个数,dtype='类型')5.np.zeros_like() 6.np.ones_like()4. ndarray对象属性的基本操作(1)数组的维度np.ndarray.shape1.维度基础操作(2)元素的类型:np.ndarray.dtype(3)数组元素的个数:np.ndarray.size(4)数组元素索引(下标)5.ndarray对象属性操作详解(1)numpy的内部基本数据类型(2)自定义复合类型
1. numpy概述
(1)Numerical Python,数值的Python,补充了Python语言所欠缺的数值计算能力
(2)是其他数据分析及机器学习库的底层库
(3)完全标准C语言实现,运行效率充分优化
(4)开源免费
2. numpy的核心:多维数组
1.代码简洁
减少python代码中的循环
2. 底层实现
厚内核(C)+薄接口(Python),保证性能
3. numpy基础
(1)ndarray数组
用np.ndarray类的对象表示n维数组
import numpy as np ary=np.array([1,2,3,4,5,6]) print(ary,type(ary)) print(ary.shape) ary.shape=(2,3) print(ary,ary.shape) ary.shape=(6,) print(ary) print(ary*3)##每个都乘3 [1 2 3 4 5 6] <class 'numpy.ndarray'> (6,) [[1 2 3] [4 5 6]] (2, 3) [1 2 3 4 5 6] [ 3 6 9 12 15 18]
(2)内存中的ndarray对象
元数据
存储对目标数组的描述信息,如:dim count\dimensions\dtype\data等
实际数据
完整的数组数据
将实际数据与元数据分开存放,一方面提高了内存空间的使用效率,一方面减少对实际数据的访问频率,提高性能
(3)ndarray数组对象的特点
1.numpy数组是同质数组,所有元素的数据类型必须相同
2.下标从0开始
(4)ndarray数组对象的创建
1.np.array(任何可被解释为numpy数组的逻辑结构)
import numpy as np a=np.array([1,2,3,4,5,6]) print(a)
2.np.arange(起始值(0),终止值,步长(1))
import numpy as np a=np.arange(2,9,1) print(a)
3.np.zeros(数组元素个数,dtype='类型')
4.np.ones(数组元素个数,dtype='类型')
5.np.zeros_like()
6.np.ones_like()
4. ndarray对象属性的基本操作
(1)数组的维度np.ndarray.shape
1.维度基础操作
import numpy as np a=np.arange(1,9) print(a,a.shape) #改变维度 a.shape=(2,4) print(a,a.shape) [1 2 3 4 5 6 7 8] (8,) [[1 2 3 4] [5 6 7 8]] (2, 4)
(2)元素的类型:np.ndarray.dtype
import numpy as np a=np.array([1,2,3,4,5,6]) #转换ary元素的类型 b=a.astype(float) print(type(b),b,b.dtype) <class 'numpy.ndarray'> [1. 2. 3. 4. 5. 6.] float64 print(a.dtype) #错误的修改数据类型方式 a.dtype='float32' print(a,a.dtype) int64 [[1.4e-45 0.0e+00 2.8e-45 0.0e+00 4.2e-45 0.0e+00 5.6e-45 0.0e+00] [7.0e-45 0.0e+00 8.4e-45 0.0e+00 9.8e-45 0.0e+00 1.1e-44 0.0e+00]] float32 b=a.astype('float32')#要赋值给新的变量接收 print(b,b.dtype) [[1.4e-45 0.0e+00 2.8e-45 0.0e+00 4.2e-45 0.0e+00 5.6e-45 0.0e+00] [7.0e-45 0.0e+00 8.4e-45 0.0e+00 9.8e-45 0.0e+00 1.1e-44 0.0e+00]] float32
(3)数组元素的个数:np.ndarray.size
print(b.size,len(b))#len是最外层有多少个 16 2
(4)数组元素索引(下标)
c=np.arange(1,19) c.shape=(3,2,3) print(c) #两种写法 print(c[0][1][0]) print(c[0,1,0]) #开头有几个中括号就是几维 [[[ 1 2 3] [ 4 5 6]] [[ 7 8 9] [10 11 12]] [[13 14 15] [16 17 18]]] 4 4 #通过索引把所有元素遍历出来 for i in range(c.shape[0]):#shape返回的是元组 for j in range(c.shape[1]): for k in range(c.shape[2]): print(c[i,j,k]) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 •