Numpy:提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。
高性能科学计算和数据分析的基础包
ndarray,多维数组(矩阵),具有矢量运算能力,快速、节省空间
矩阵运算,无需循环,可完成类似Matlab中的矢量运算
线性代数、随机数生成
import numpy as np
Scipy
Scipy :基于Numpy提供了一个在Python中做科学计算的工具集,专为科学和工程设计的Python工具包。主要应用于统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解、稀疏矩阵等,在数学系或者工程系相对用的多一些,和数据处理的关系不大, 我们知道即可,这里不做讲解。
在NumPy库的基础上增加了众多的数学、科学及工程常用的库函数
线性代数、常微分方程求解、信号处理、图像处理
一般的数据处理numpy已经够用
import scipy as sp
简而言之:numpy是一个高性能的科学计算和数据分析的工具包,主要针对数值计算,用于多维数组和矩阵。
scipy是在numpy基础上,增加了众多的数学、科学及工程常用的库函数,和数据处理的关系不大, 我们知道即可,这里不做讲解。
更多资料:
Python、NumPy和SciPy介绍:http://cs231n.github.io/python-numpy-tutorial
NumPy和SciPy快速入门:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
# -*- coding: utf-8 -*-
# @File : numpy_array_demo.py
# @Date : 2019-12-30 15:29
# @Author : admin
import numpy as np
'''
数组的结构:array.shape
数组的维度:array.ndim
元素的类型:array.dtype
数组元素的个数:array.size
数组的索引(下标):array[0]
'''
########################################################1.1 定义numpy的数组##########################
a=np.array([1,2,3,4,5,6])
b=np.array(range(10)) ## np.arange(起始值, 结束值, 步长(默认1))
#arange 可以设置起始,结束值,步长
b = np.arange(1, 10, 3)
c=np.arange(1,7);
print(a)
print(b)
print(c)
#元素的类型
print(a.dtype)
#数组元素的个数
print(a.size)
#维度
print(a.ndim)
#数组的结构
print(a.shape)
print(type(a))
'''
[1 2 3 4 5 6]
[1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6]
int32
6
1
(6,)
<class 'numpy.ndarray'>
'''
########################################################1.2 修改numpy的数组类型##########################
a=np.array([1,0,1,0],dtype=np.bool)
print(a)
#修改数据类型
a=a.astype(np.int)
print(a)
b=np.array([0.34567,0.23678])
#四舍五入,保留小数
b=np.round(b,2)
print(b)
'''
[ True False True False]
[1 0 1 0]
[0.35 0.24]
'''
########################################################1.3 修改numpy的数组类型##########################
a=np.array([34,5,6,7,8,9,0])
print(a.shape) #shpe有几个值就是几维
b=np.array([[2,4,1,5,6,1],[9,5,76,23,5,9]])
#查看数组的形状
print(b.shape)
#修改数组的形状
c=b.reshape(3,4);
print(c)
print(b.shape)
print(c.shape)
#数组转成一维
d=c.reshape(1,12);
print(d)
print(d.shape) #还是二维的
#正确的语法,转成一维
print(b.flatten())
########################################################1.4 numpy数组的计算##########################
'''
如果两个数组的后缘维度,(即从末尾开始算起的维度),的轴长度相符或其中一方的长度为1
,则认为他们是广播兼容的,广播会在缺失和(长度为1)的维度上进行
'''
a=np.array([[3,4,5,6,7,8],[1,2,3,4,5,6]]) #(2,6)
b=np.array([[5,6,7,8,9,0],[9,8,7,6,5,7]])
c=np.array([1,2,3,4,5,8]) #(6,)
print("======")
print(a+1);
print(a*2)
print(a+b)
print(a+c)
'''
======
[[4 5 6 7 8 9]
[2 3 4 5 6 7]]
[[ 6 8 10 12 14 16]
[ 2 4 6 8 10 12]]
[[ 8 10 12 14 16 8]
[10 10 10 10 10 13]]
[[ 4 6 8 10 12 16]
[ 2 4 6 8 10 14]]
'''