数据分析之路 第一篇 numpy
第一篇 numpy
1.N维数组对象 :ndarray
在Python中既然有了列表类型,为啥还要整个数组对象(类型)?那是因为:
1.数组对象可以除去元素间运算所需要的循环,使得一维向量更像单个数据
2.设置数组对象可以提升计算的速度
3.数组对象采取相同的数据类型,有助于节省运算空间和存储空间
nsarray 是一个多维数组对象,由两部分组成:
1.实际的数据
2.描述这些数据的原数据(数据维度、数据类型等)
import numpy as np a = np.array([[0,1,2,3,4], [9,8,7,6,5]]) print(a.ndim) print(a.shape) print(a.size) print(a.dtype) print(a.itemsize) #2 #(2, 5) #10 #int32 #4
#创建数组 import numpy as np x = np.array([0,1,2,3]) x1 = np.array((0,1,2,3)) x2 = np.array([[1,2],[3,4],[0.4,0.5]]) print(x) print(x1) print(x2) 注释: [0 1 2 3] [0 1 2 3] [[ 1. 2. ] [ 3. 4. ] [ 0.4 0.5]]
ndarray 数组的变换
import numpy as np a = np.ones((2,3,4),dtype=np.int32) print(a) b = a.reshape(3,8) print(b) #ndarray 数组向列表转化 print(a.tolist()) 注意: [[[1 1 1 1] [1 1 1 1] [1 1 1 1]] [[1 1 1 1] [1 1 1 1] [1 1 1 1]]] [[1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1]] [[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]]
ndarray数组的切片和索引
#数组的索引和切片 a = np.arange(24).reshape((2,3,4)) print(a)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
print(a[1,2,3]) #23 print(a[-1,-2,-3]) #17 print(a[:,1,-3]) #[ 5 17] print(a[:,1:3,:]) print(a[:,:,::2]) 输出结果: [[[ 4 5 6 7] [ 8 9 10 11]] [[16 17 18 19] [20 21 22 23]]] [[[ 0 2] [ 4 6] [ 8 10]] [[12 14] [16 18] [20 22]]]