目录
NumPy介绍:
NumPy是高性能科学计算和数据分析的基础包。
部分功能如下:
ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组
用于对整组数据进行快速运算的标准数学函数(无需编写循环)
用于读写磁盘数据的工具以及用于操作内存映射文件的工具
线性代数、随机数生成以及傅里叶变换功能
用于继承C、C++、Fortran等语言编写的代码的工具
ndarray:
ndarray是一种多维数组对象,它的所有元素必须是相同类型的,每个数组都有一个shape(表示各维度大小的元组)和一个的dtype(表示数组数据类型的对象)
创建ndarray:
函数
说明array
将输入数据(列表、元组、数组或其他序列类型)转换为ndarray,可传dtype参数指定数据类型,不传dtype参数numpy会自动推断数据类型。默认直接复制输入数据。
asarray
将输入转换成ndarray,如果输入本身就是ndarray就不进行复制
arange
类似于range,但返回的是一个ndarray不是生成器
ones、ones_like
ones根据指定形状(一个用来定义维度的元组)和dtype创建一个全1数组,ones_like以另一个ndarray数组为参数,并根据形状和dtype创建一个全1数组
zeros、zeros_like
类似于ones和ones_like,只不过返回的是全0数组
empty、empty_like
类似于ones和ones_like,之分配空间不填充任何数值(随机数字)
eye、identity
创建一个正方的N×N单位矩阵(对角线为1,其余全为0)
ndarray的数据类类型:
类型
类型代码
说明int8、uint8
i1、u1
有符号和无符号的8位(1字节)整型
int16、uint16
i2、u2
有符号和无符号的16位(2字节)整型
int32、uint32
i4、u4
有符号和无符号的32位(4字节)整型
int64、uint64
i8、u8
有符号和无符号的64位(8字节)整型
float16
f2
半精度浮点数
float32
f4或f
标准的单精度浮点数,与C的float兼容
float64
f8或d
标准的双精度浮点数,与C的double和Python的float兼容
float128
f16或g
扩展精度浮点数
complex64、complex128、complex256
c8、c16、c32
分别用32位、64位和128位浮点数表示的复数
bool
?
存储True和False的布尔类型
object
O
Python对象类型
string_
S
固定长度的字符串类型(每个字符一个字节)。例如,创建一个长度为10的字符串应使用S10。
unicode_
U
固定长度的unicode类型(字节数由平台决定)。和字符串定义方式一样(如U10)
使用ndarray的astype方法可以转换ndarray的数据类型。
In [28]: a1=array([1, 2, 3])
In [30]: a1.astype('S1')
Out[30]: array([b'1', b'2', b'3'], dtype='|S1')
数组和标量之间的运算:
数组之间的运算:
大小相等的数组之间的任何算术运算都会应用到元素级。
In [35]: a1=np.arange(6).reshape((2,3))
In [38]: a1*a1
Out[38]:
array([[ 0, 1, 4],
[ 9, 16, 25]])
In [39]: a1+a1
Out[39]:
array([[ 0, 2, 4],
[ 6, 8, 10]])
大小相同的数组之间的比较会生成布尔值数组:
In [57]: arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
In [58]: arr2
Out[58]:
array([[ 0., 4., 1.],
[ 7., 2., 12.]])
In [59]: arr2 > arr
Out[59]:
array([[False, True, False],
[ True, False, True]], dtype=bool)
数组和标量之间的运算:
数组与标量的运算会把标量值广播到数组的每个元素。
In [40]: a1 / 1
Out[40]:
a