我爱编程

Numpy|FancyPie

2018-03-18  本文已影响0人  肖想
image

欢迎关注公众号【肖想】(ID:xiaoxiang9187)

Numpy是Python的一种开源的科学计算扩展库。Numpy提供的数据结构Array(数组)可用来存储和处理大型矩阵,比Python自身的数据结构(列表、元组和集合)结构要高效的多。Array的操作极其类似Matlab的矩阵运算。

Numpy库的使用重点:

Array的创建

首先,我们得先熟悉掌握得到Array数组的方法,才能往下了解其的功能和用法。大概有两种方法:一是直接生产Array数组,二是从其他python支持的数据结构转换为Array数组。

## Array的创建
# 直接生成
import numpy as np
a = np.arange(1, 10, 2) #生成一维数组
b = np.ones([5, 4]) #生成元素都为1的数组
c = np.ndarray([5, 4], dtype=np.float) #生成一个5*4的空数组
d = np.random.random([100, 1]) #生成随机数组
# 从其他数据结构转换
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([[1, 2, 3, 4], ['a', 'b', 'c', 'd']])

常用的Array数组的属性:shape、size、ndim和dtype等。

# Array的常用属性
import numpy as np
arr = np.array([[1, 2, 3, 4], ['a', 'b', 'c', 'd']])
print(arr.shape) #数组的大小,返回一个元组
print(arr.size) #数组包含的元素的个数
print(arr.ndim) #数组的维数
print(arr.dtype) #array数组的数据类型

Array的选择和切片

Array数组之所以会成为科学计算最最常用的数据结构,原因就是其元素选择和切片极其的简便和强大。

首先元素的选择,和python内建的数据结构一样,用[]来引用,且也是从0开始编号。比如二维数组arr中,arr[0,0]表示第1行第1列的元素,arr[3,4]表示第4行第5列的元素。

其次数组的切片,即选择数组的某一部分(子集),也和其他其中结构一样,以冒号:表示。但是数组切片的时候还是有一些要注意的点,否则很容易出现错误。比如1:3表示第2至3行,:3表示第1至3行,1:5:2表示从1到4(不包含5)步长2。

## Array的选择和切片
import numpy as np
arr = np.random.random((5,6))
arr[1:3,2] #第2至3行,第3列
arr[:3,2] #第1至3行,第3列
arr[:,2] #第3列
arr[-1,:] #倒数第一行
arr[[1,3],1:3] #第2、4行,第2至3列
arr[1,1:5:2] #第2行,第2、4列
arr[arr>0] #选出大于0的元素

Array的计算

## Array的计算
import numpy as np
arr1 = np.ones([2,2])
arr2 = np.array([[-1,3],[2,-2]])
# 数学运算
arr1+arr2 #元素对应相加
arr1-arr2 #元素对应相减
arr1*arr2 #元素对应相乘
arr1/arr2 #元素对应相除
np.sqrt(arr1) #元素求平方根
# 矩阵运算
np.dot(arr1,arr2) #矩阵相乘
arr1.T #矩阵转置
arr2.reshape([1,4]) #变为1*4的数组,生成一个新数组
arr2.resize([1,4]) #变为1*4的数组,原数组上转换
# 矩阵合并
a = np.random.random((2,3))
b = np.array([(1,2,3),(3,2,1)])
h1 = np.vstack((a, b)) #按行合并
h2 = np.hstack((a, b)) #按列合并
h3 = np.column_stack((a, b))
# 集合运算
import numpy as np
arr1 = np.ones([2,2])*2
arr2 = np.array([[-1,3],[2,-2]])
np.unique(arr1) #唯一值
np.intersect1d(arr1,arr2) #交集
np.union1d(arr1,arr2) #并集
np.setdiff1d(arr1,arr2) #差集

Array的描述统计

## Array的描述统计
import numpy as np
arr = np.random.random((5,6))
arr.mean() #全部平均
arr.mean(axis=0) #按列平均
arr.mean(axis=1) #按行平均
arr.sum() #全部求和
arr.std() #全部求标准差
arr.cumsum() #按列累和
arr.cumprod() #按列累乘

Array的存储和读取

Array数据可以保存为excel或者txt文件,也可以保存为其自带的格式文件.npy或者.npz。

## Array的存储和读取
import numpy as np
arr1 = np.ones([2,2])*2
arr2 = np.array([[-1,3],[2,-2]])
# 储存
np.save('data1',arr1) #将1个array保存为.npy格式的文件
np.savez('data2',a=arr1,b=arr2) #将多个array保存为.npz格式的文件
# 读取
data1 = np.load('data1.npy')
data2 = np.load('data2.npz')
data2['a']
data2['b']

欢迎关注公众号【肖想】(ID:xiaoxiang9187)

上一篇 下一篇

猜你喜欢

热点阅读