在学PyTorch的时候发现numpy这个库很重要,需要先学会一些关于numpy的基础操作。
numpy是一个由多维数组对象和用于处理数组的例程集合组成的库
numpy.arange
这个函数返回ndarray对象,包含给定范围内的等间隔值。(左闭右开)
语法:
numpy.arange(start, stop, step, dtype)
start:范围的起始值,默认为0
stop:范围的终止值。这个必须要写
step:两个值的间隔,默认为1
dtype:返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型
举例:
import numpy as np
a = np.arange(10)
# [0 1 2 3 4 5 6 7 8 9]
print(a)
若设置dtype
import numpy as np
a = np.arange(10,dtype=float)
# [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
print(a)
numpy.array
语法:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列
dtype 数组的所需数据类型,可选
copy 可选,默认为true,对象是否被复制
order C(按行)、F(按列)或A(任意,默认)
subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类
ndmin 指定返回数组的最小维数
举例:
import numpy as np
# 创建一维数组
a=np.array([1,2,3])
# [1 2 3]
print(a)
import numpy as np
# 创建二维数组
a=np.array([[1,2,3],[4,5,6]])
# [[1 2 3]
# [4 5 6]]
print(a)
利用ndmin创建最小维度为三的数组
import numpy as np
# 利用ndmin创建最小维度为三的数组
a=np.array([1,2,3,4,5,6,7,8,9],ndmin=3)
# [[[1 2 3 4 5 6 7 8 9]]]
print(a)
numpy.random.random
首先看下官方给出的定义
只含有一个参数,即含有几个数,范围是从0.0到1.0,但是在size中可以设置多维的
例:
import numpy as np
# 创建一维数组
a=np.random.random(size=5)
# [0.05908577 0.91198575 0.75333062 0.25697959 0.14501117]
print(a)
import numpy as np
# 创建二维数组
a=np.random.random(size=(3,4))
# [[0.0274142 0.33805646 0.58105254 0.52189998]
# [0.95731453 0.27314703 0.79763513 0.2901342 ]
# [0.53157242 0.67864834 0.14558273 0.19920197]]
print(a)
import numpy as np
# 创建三维数组
a=np.random.random(size=(2,3,4))
# [[[0.22642826 0.06072445 0.14460518 0.30384355]
# [0.3478142 0.47256098 0.43939667 0.4648733 ]
# [0.3562538 0.68618394 0.66407636 0.28635854]]
#
# [[0.89149643 0.44106203 0.35362113 0.04824037]
# [0.06539381 0.50478194 0.97873172 0.95765194]
# [0.6702378 0.47600222 0.20559519 0.58534509]]]
print(a)
numpy.random.randint
randint(low, high=None, size=None, dtype=None)
low:起始值,默认为零
high:终止值(不包含,即左闭右开)
size:控制维度
dtype:数组的所需数据类型,可选
例
import numpy as np
# 生成5-10的随机整数一维数组
a=np.random.randint(5,11,size=5)
# [6 6 6 9 6]
print(a)
import numpy as np
# 生成5-10的随机整数二维数组
a=np.random.randint(5,10,size=(4,3))
# [[7 5 7]
# [8 9 5]
# [8 6 8]
# [5 9 8]]
print(a)
numpy.randn
参数一个size(),可以生成多种维度的标准正态分布的数
import numpy as np
# 创建标准正态分布的一维数组
a=np.random.randn(5)
# [ 1.15319871 -1.76212287 0.08031211 -0.18964027 -0.75762545]
print(a)
import numpy as np
# 创建标准正态分布的二维数组
a=np.random.randn(2,3)
# [[-0.08625561 1.92063506 0.44541924]
# [ 0.38012873 0.71930532 0.80525306]]
print(a)
numpy.random.normal
加了两个控制期望与方差的参数而已
其他的和randn()一样
numpy.zeros
返回特定大小,以 0 填充的新数组。
numpy.zeros(shape, dtype = float, order = 'C')
Shape 空数组的形状,整数或整数元组
Dtype 所需的输出数组类型,可选
Order 'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组
例
import numpy as np
x = np.zeros((5,), dtype=np.int64)
# [0 0 0 0 0]
print(x)
# 自定义类型
import numpy as np
x = np.zeros((2, 2), dtype=[('x', 'i4'), ('y', 'i4')]
# [[(0, 0) (0, 0)]
# [(0, 0) (0, 0)]]
print(x)
numpy.ones
返回特定大小,以 1 填充的新数组。
其他和numpy.zeros一样
numpy.empty
创建指定形状和dtype的未初始化数组
numpy.empty(shape, dtype = float, order = 'C')
numpy.linspace
此函数类似于arange()函数。 在此函数中,指定了范围之间的均匀间隔数量,而不是步长
numpy.linspace(start, stop, num, endpoint, retstep, dtype)
start 序列的起始值
stop 序列的终止值,如果endpoint为true,该值包含于序列中
num 要生成的等间隔样例数量,默认为50
endpoint 序列中是否包含stop值,默认为ture
retstep 如果为true,返回样例,以及连续数字之间的步长
dtype 输出ndarray的数据类型
例:
import numpy as np
x = np.linspace(10, 20, 5)
# [10. 12.5 15. 17.5 20. ]
print(x)
# 输出 retstep 值
import numpy as np
x = np.linspace(1, 2, 5, retstep=True)
# (array([1. , 1.25, 1.5 , 1.75, 2. ]), 0.25)
print(x)
# 这里的 retstep 为 0.25
numpy.logspace
此函数返回一个ndarray对象,其中包含在对数刻度上均匀分布的数字。 刻度的开始和结束端点是某个底数的幂,通常为 10
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None,axis=0):
num 范围内的数值数量,默认为50
endpoint 如果为true,终止值包含在输出数组当中
base 对数空间的底数,默认为10
dtype 输出数组的数据类型,如果没有提供,则取决于其它参数
例:
import numpy as np
# 默认底数是 10
a = np.logspace(1.0, 2.0, num=10)
#[ 10. 12.91549665 16.68100537 21.5443469 27.82559402
# 35.93813664 46.41588834 59.94842503 77.42636827 100. ]
print(a)
# 将对数空间的底数设置为 2
import numpy as np
a = np.logspace(1, 10, num=10, base=2)
# [ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]
print(a)