numpy
Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。
Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
Numpy使用 ndarray
对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
import numpy as np
# 创建ndarray
score = np.array(
[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
score
# 输出
array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
array
numpy 模块的 array 函数可以生成多维数组。例如,如果要生成一个二维数组,需要向 array 函数传递一个列表类型的参数。每一个列表元素是一维的 ndarray 类型数组,作为二维数组的行。另外,通过 ndarray 类的 shape 属性可以获得数组每一维的元素个数(元组形式), 也可以通过 shape[n]形式获得每一维的元素个数,其中 n 是维度,从 0 开始。
数组默认要求:每行元素数量相等。
parameters:
- object:数组或嵌套的数列
- dtype:数组元素的数据类型,可选
- copy:对象是否需要复制,可选
- order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
- subok:默认返回一个与基类类型一致的数组
- ndmin:指定生成数组的最小维度
import numpy as np
a=np.array([1,2,3,4,5,6],ndmin=3)
print(a)
# output
[[[1 2 3 4 5 6]]]
ndarray
属性方法:
- ndarray.shape:返回数组维度的元组
- ndarray.ndim:返回数组维数
- ndarray.size:返回数组中的元素数量
- ndarray.itemsize:一个数组元素的长度(字节)
- ndarray.dtype:数组元素的类型
import numpy as np
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
b=np.array([1,2,3,4])
c=np.array([[[1,2],[3,4],[5,6],[7,8]],[[1,2],[3,4],[5,6],[7,8]]])
print(a.shape)
print(b.shape)
print(c.shape)
# output
(2, 3) # 二维数组
(4,) # 一维数组
(2, 4, 2) # 三维数组
生成0和1的数组
- np.ones(shape, dtype)
import numpy as np
ones=np.ones([2,3,4])
print(ones)
# output
[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
- np.ones_like(a, dtype)
import numpy as np
a=np.zeros([2,3,1])
ones=np.ones_like(a)
print(a)
# output
[[[0.]
[0.]
[0.]]
[[0.]
[0.]
[0.]]]
- np.zeros(shape, dtype)
import numpy as np
zeros=np.zeros([2,3,4])
print(zeros)
[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]
- np.zeros_like(a, dtype)
import numpy as np
a=np.ones([2,3,3])
zeros=np.zeros_like(a)
print(a)
# output
[[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]
创建一个制定形状的数组,不初始化
- np.empy()
numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的 数组,里面的元素的值是之前内存的值:
numpy.empty(shape, dtype = float, order = 'C')
- shape:数组形状
- dtype:数组类型
- order:C,行优先;F列优先
import numpy as np
a=np.empty([3,2,4])
print(a)
#output
[[[6.23042070e-307 1.89146896e-307 1.37961302e-306 1.05699242e-307]
[1.95821439e-306 7.56598449e-307 1.11261027e-306 1.24610383e-306]]
[[1.69118108e-306 8.06632139e-308 1.20160711e-306 1.69119330e-306]
[1.29062229e-306 1.60217812e-306 1.37961370e-306 8.45592576e-307]]
[[1.37961981e-306 1.42418172e-306 2.04712906e-306 7.56589622e-307]
[1.11258277e-307 8.90111708e-307 3.22643519e-307 9.79103798e-307]]]
创建一个指定形状的数组,不初始化-2
-np.random.ramdom_sample()
import numpy as np
a = np.random.random_sample((3,4))
print(a)
# output
[[0.04997798 0.77390955 0.93782363 0.5792328 ]
[0.53516563 0.80204309 0.24814448 0.59096694]
[0.32950282 0.98797985 0.86846315 0.16452144]]
np.arrange
a = np.arange(4.); print(f"np.arange(4.): a = {a}, a shape = {a.shape}, a data type = {a.dtype}")
a = np.random.rand(4); print(f"np.random.rand(4): a = {a}, a shape = {a.shape}, a data type = {a.dtype}")
# output
np.arange(4.): a = [0. 1. 2. 3.], a shape = (4,), a data type = float64
np.random.rand(4): a = [0.11806417 0.07001424 0.32127946 0.76023838], a shape = (4,), a data type = float64
完整输出numpy
np.set_printoptions(threshold=np.nan)
# or
import sys
np.set_printoptions(threshold=sys.maxsize)
numpy.reshape()
mat.reshape(1,2,1080,1440) # [batch,channel,height,width]