文章目录
Numpy
1.关于Numpy
Numpy一个在Python中做科学计算的基础库,有了Numpy,很多数值计算边的很简单。
Numpy是大部分Python科学计算库的基础库(如Pandas),多用于在大型、多维数组上执行数值运算。
2. Numpy创建数组
直接cmd打开控制台,输入ipython,然后在命令行中如下依次键入命令
In [1]: import numpy as np
In [2]: a = np.array([1,2,3,4,5])
In [3]: a
Out[3]: array([1, 2, 3, 4, 5])
In [4]: b = np.array(range(1,6))
In [5]: b
Out[5]: array([1, 2, 3, 4, 5])
In [7]: type(a)
Out[7]: numpy.ndarray
如上所述,就创建了两个一维数组,数组的类型为 numpy.ndarray类型
2.1 Numpy中常见的数据类型
类型 | 类型代码 | 说明 |
---|---|---|
int8, uint8 | i1, u1 | 有符号、无符号8位整型 |
int16, uint16 | i2, u2 | 有符号、无符号16位整型 |
int32, uint32 | i4, u4 | 有符号、无符号32位整型 |
int64, uint64 | i8, u8 | 有符号、无符号64位整型 |
float16 | f2 | 半精度浮点数 |
float32 | f4或f | 单精度浮点数(c语言当中的float) |
float64 | f8或d | 双精度浮点数(C语言当中的double) |
float128 | f16或g | 扩展浮点数 |
complex64,complex128, complex256 | c8, c16, c32 | 分别用两个32,两个64, 两个128位表示的复数 |
bool | 布尔类型 |
In [3]: t1 = np.arange(12)
In [4]: t1
Out[4]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
In [6]: t2 = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
In [7]: t2
Out[7]:
array([[3, 4, 5, 6, 7, 8],
[4, 5, 6, 7, 8, 9]])
In [8]: t1.dtype
Out[8]: dtype('int32') #默认元素类型为int32
In [10]: a = np.array([1,0,2,3],dtype = np.bool) #可以通过后面的dtype参数指定元素类型
In [11]: a
Out[11]: array([ True, False, True, True])
#可以通过astype来临时改变元素类型,但该操作并不能是原数组改变
In [12]: a.astype(np.int32) # 这个等价于a.astype("i4"),即直接用类型代码也是可以的
Out[12]: array([1, 0, 1, 1])
In [13]: a
Out[13]: array([ True, False, True, True])
In [10]: a =np.array(np.random.rand(10))
In [11]: a
Out[11]:
array([0.20781111, 0.84837294, 0.70426743, 0.19315556, 0.98874592,
0.37785934, 0.33709601, 0.25996463, 0.5227643 , 0.89457062])
In [12]: np.round(a,2) #a的每一个元素都保留两位小数,注意:该操作不会改变原来的a数组
Out[12]: array([0.21, 0.85, 0.7 , 0.19, 0.99, 0.38, 0.34, 0.26, 0.52, 0.89])
In [13]: a
Out[13]:
array([0.20781111, 0.84837294, 0.70426743, 0.19315556, 0.98874592,
0.37785934, 0.33709601, 0.25996463, 0.5227643 , 0.89457062])
3.数组的形状
3.1获取数组的形状,指定数组形状
In [15]: a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
In [16]: a
Out[16]:
array([[3, 4, 5, 6, 7, 8],
[4, 5, 6, 7, 8, 9]])
In [17]: a.shape
Out[17]: (2, 6) #a是2行6列的
In [18]: a.reshape(3,4) #注意,a一共有12个元素,因此reshape的时候,注意元素个数一定要对应上,否则就会报错
Out[18]:
array([[3, 4, 5, 6],
[7, 8, 4, 5],
[6, 7, 8, 9]])
In [19]: a.shape #reshape同样,不会改变原来的a
Out[19]: (2, 6)
In [20]: a.reshape(5,6)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-20-27415d54c7dd> in <module>
----> 1 a.reshape(5,6)
ValueError: cannot reshape array of size 12 into shape (5,6)
In [21]: a.reshape(1,12)
#注意,这样,就重新构成了一个1行12列数组,依然是一个二维数组
Out[21]: array([[3, 4, 5, 6, 7,