numpy是一个开源的python科学计算扩展库,主要用来处理任意维度数组和矩阵。相同的任务,使用numpy比直接用python的基本数据结构更加简单高效。
安装
pip install numpy
导入
import numpy as np一、 ndarray和array
使用Numpy操作的数据基本对象就是ndarray
array()是其中的一种创建 ndarray对象的函数
ndarray和array的区别
- ndarray是一个类,np.ndarray()其实是它的构造函数,得到一个 ndarray 对象,而 array() 其实是为了便于创建一个 ndarray对象的函数。两者得到的结果其实是一样的。
- np.ndarray()构造函数相对更麻烦也更低级一些,使用默认构造函数创建的ndarray对象的数组元素是随机值,而 numpy提供了一系列的创建 ndarray对象的函数,array()就是其中的一种;使用来构造 ndarray对象会更方便一些。
In [1]: nu_1 = np.array([[1,2,3],[4,5,6]]) print(type(nu_1)) print(nu_1.dtype, 'n') nu_2 = np.ndarray(shape=(2,3), dtype=np.int32) print(type(nu_2)) print(nu_2.dtype) Out[1]:int32 int32
注意:Numpy 数组必须是同质数组,即数组中每个元素的数据类型都相同
二、 函数用法
numpy.empty() 创建一个指定形状、数据类型且未初始化的数组 numpy.zeros() 创建指定大小的数组,数组元素以 0 来填充 numpy.ones() 创建指定形状的数组,数组元素以 1 来填充 numpy.ones_like() 返回一个用1填充的跟输入形状和类型一致的数组 numpy.arange() 创建按规则生成的数组 numpy.asarray() 生成一个和参数大小相同的数组 numpy.expand_dims() 拓展维度 numpy.squeeze() 删除维度
三、代码举例
In [1]: import numpy as np
In [2]: x = np.empty([2,2], dtype = int)
print (x)
Out[2]: [[ 454200021 981447334]
[1046534076 1965585521]]
In [3]: a = np.zeros(4)
print(a)
b = np.zeros((2,3), dtype = np.float32)
print(b)
c = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'f4')])
print(c)
Out[3]: [0. 0. 0. 0.]
[[0. 0. 0.]
[0. 0. 0.]]
[[(0, 0.) (0, 0.)]
[(0, 0.) (0, 0.)]]
In [4]: a = np.ones(5)
print(a)
b = np.ones((4,2), dtype=np.int32)
print(b)
Out[4]: [1. 1. 1. 1. 1.]
[[1 1]
[1 1]
[1 1]
[1 1]]
In [5]: temp = np.zeros((2, 2))
c = np.ones_like(temp)
print(temp, 'n' * 2, c)
Out[5]: [[0. 0.]
[0. 0.]]
[[1. 1.]
[1. 1.]]
In [6]: a = np.arange(5)
print(a, type(a))
b = np.arange(1, 5)
c = np.arange(1, 5, 2)
d = np.arange(1, 5.2, 0.6)
print('n', b, 'nn', c, 'nn', d)
Out[6]: [0 1 2 3 4]
[1 2 3 4]
[1 3]
[1. 1.6 2.2 2.8 3.4 4. 4.6 5.2]
# 注意:此处由于浮点益处,系统中保存的值为5.20000001,所以结果能取到5.2
In [7]: a = [1, 2, 3, 4]
new_arr = np.asarray(a)
print(new_arr)
new_arr = np.asarray(a, dtype=np.float32)
print(new_arr)
Out[7]: [1 2 3 4]
[1. 2. 3. 4.]
In [8]: arr = np.arange(1, 13).reshape(3,4)
print(arr)
print(np.sum(arr))
print(arr.sum())
print(np.cumsum(arr)) # 计算所有元素的累计和
print(np.cumprod(arr)) # 计算所有元素的累计积
Out[8]: [[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
78
78
[ 1 3 6 10 15 21 28 36 45 55 66 78]
[ 1 2 6 24 120 720 5040
40320 362880 3628800 39916800 479001600]
In [9]: arr = np.arange(4).reshape(2,2)
arr
Out[9]: array([[0, 1],
[2, 3]])
In [10]: new = np.expand_dims(arr, axis=0) #在0轴拓展一个维度
new
Out[10]: array([[[0, 1],
[2, 3]]])
In [11]: arr.shape
Out[11]: (2, 2)
In [12]: new.shape
Out[12]: (1, 2, 2)
In [13]: arr = array([[[0 1]
[2 3]]])
new_arr = np.squeeze(arr, axis=0) #删除0轴的维度
In [14]: print(new_arr)
Out[14]: [[0 1]
[2 3]]
In [15]: print(new_arr.shape)
Out[15]: (2, 2)



