NumPy初识

数据分析

  把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规则

数据分析三剑客  

  NumPy Pandas Matplotlib

安装:

1 pip3 install numpy -i https://pypi.mirrors.ustc.edu.cn/simple/ 

NumPy

  • 一个强大的N维数组对象

  • 复杂的(广播)功能

  • 用于集成C / C ++和Fortran代码的工具

  • 有用的线性代数,傅里叶变换和随机数功能

ndarray对象更重要的属性是:

ndarray.ndim
数组的轴数(尺寸)。
ndarray.shape
数组的大小。这是一个整数元组,表示每个维度中数组的大小。对于具有n行和m的矩阵shape将是(n,m)shape因此元组的长度 是轴的数量ndim
ndarray.size
数组的元素总数。这等于元素的乘积shape
ndarray.dtype
描述数组中元素类型的对象。可以使用标准Python类型创建或指定dtype。此外,NumPy还提供自己的类型。numpy.int32,numpy.int16和numpy.float64就是一些例子。
ndarray.itemsize
数组中每个元素的大小(以字节为单位)。例如,类型的元素数组float64itemsize8(= 64/8),而其中一个类型complex32itemsize4(= 32/8)。它相当于ndarray.dtype.itemsize
ndarray.data
包含数组实际元素的缓冲区。通常,我们不需要使用此属性,因为我们将使用索引工具访问数组中的元素。

一维数组创建

1 import numpy as np
2 
3 print(np.array([1, 2, 3, 4, 5]))

二维数组创建

1 arr = np.array([[1, 2, 3], ['a', 'b', 1.1]])
2 print(arr)
3 # numpy默认ndarray的所有元素类型相同的
4 # 如果传进来的列表中包含不同的类型 统一为同一类型 str>float>int

使用matplotlib.pyplot获取一个numpy数组 数据来源一张图片

1 import matplotlib.pyplot as plt
2 img_arr = plt.imread('./th.jpg')
3 ret = plt.imshow(img_arr)
4 res = img_arr - 100
5 print(ret)
6 print(plt.imshow(res))

使用np的routines函数创建

1 # np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None,axis=0)等差数列
2 # print(np.linspace(1, 100, num=50)) 一维数组
3 
4 # print(np.arange(1, 100, 2))   一维数组
5 
6 # np.random.seed(1) 固定时间种子
7 # print(np.random.randint(0, 100, size=(5, 6)))
8 # print(np.random.random(size=(5, 6)))  0-1
9 # print(np.random.randn(5, 6))  正太分布

ndarray的基本操作

1.索引
1 arr = np.random.randint(0, 100, size=(5, 6))
2 print(arr)
3 # print(arr[0])
4 # print(arr[[1, 2]])
2.切片
 1 # 获取二维数组的前两行
 2 # print(arr[0:2])
 3 # print(arr.shape)
 4 
 5 # 获取二维数组的前两列
 6 # print(arr[:, 0:2])
 7 
 8 # 获取前两行和前两列
 9 # print(arr[0:2, 0:2])
10 
11 # 将数据反转 ::进行切片
12 # 将数组行倒序
13 # print(arr[::-1])
14 # 将数组列倒序
15 # print(arr[:, ::-1])
16 # 将数组行和列都倒序
17 # print(arr[::-1, ::-1])
18 
19 
20 # 将图片列进行倒序
21 # print(plt.imshow(img_arr[:, ::-1, :]))
22 # 将图片行倒序
23 # print(plt.imshow(img_arr[::-1, :, :]))
24 # print(plt.imshow(img_arr[::-1, ::-1, ::-1]))
3.变形 使用arr.reshape()函数  注意参数是一个tuple
1 # 多维变一维数组
2 # ret = arr.reshape((30, ))
3 # print(ret)
4 # 一维数组变多维
5 # print(ret.reshape((-1, 15)))
4.级联 将数组进行拼接(维度必须一样, 形状相符)
1 # print(np.concatenate((arr, arr), axis=1))   # axis轴向 0列(y) 1行(x)
2 # arr1 = np.random.randint(0, 100, size=(5, 5))
3 # print(np.concatenate((arr, arr1), axis=1))  # 如果对列进行拼就要报错 一个5行6列 一个5行5列不匹配
4 
5 # 一个横向一个纵行
6 # np.hstack()
7 # np.vstack()

  5.排序与聚合操作

 1 # 切割
 2 # print(plt.imshow(np.split(img_arr, [300, ], axis=0)[0]))
 3 
 4 # 聚合操作
 5 
 6 #  很多
 7 # 0 每列 1每行
 8 # print(arr.sum(axis=0))
 9 # 最大最小
10 # np.max()
11 # np.min()
12 
13 # 平均
14 # np.mean()
15 
16 # 排序
17 print(np.sort(arr, axis=0))
18 
19 
20 arr.sort(axis=0)
21 print(arr)

https://www.numpy.org.cn/article/ 



 

原文地址:https://www.cnblogs.com/Alexephor/p/11354101.html