1. 生成数组的方法
np.ones(shape, dtype=None, order='C')
创建一个所有元素都为1的多维数组
参数说明:
shape : 形状;
dtype=None: 元素类型;
order : {‘C’,‘F’},可选,默认值:C 是否在内存中以行主(C-风格)或列主(Fortran-风格)顺
序存储多维数据, 一般默认即可。
np.ones(shape, dtype)
np.ones_like(a, dtype)
np.zeros(shape, dtype)
np.zeros_like(a, dtype)
ones = np.ones([4,8])
ones
array([[1., 1., 1., 1., 1., 1., 1., 1.],
[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.zeros_like(ones)
array([[0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0.]])
n = np.ones(shape=(3, 4, 5), dtype=np.int16)
# n = np.ones(shape=(3, 4), dtype=int)
n
array([[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]],
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]],
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]]], dtype=int16)
np.zeros(shape, dtype=float, order='C')
创建一个所有元素都为0的多维数组
参数说明:
shape : 形状
dtype=None: 元素类型
n = np.zeros((5, 5), dtype=np.int16)
n
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]], dtype=int16)
np.full(shape, fill_value, dtype=None, order='C')
创建一个所有元素都为指定元素的多维数组
shape: 形状
fill_value: 填充值
dtype=None: 元素类型
n = np.full(shape=(3, 4), fill_value=2)
n
array([[2, 2, 2, 2],
[2, 2, 2, 2],
[2, 2, 2, 2]])
np.eye(N, M=None, k=0, dtype=float)
对角线为1其他的位置为0的二维数组
参数说明:
N: 行数
M: 列数, 默认为None,表示和行数一样
k=0: 向右偏移0个位置
dtype=None: 元素类型
# 对角线为1其他的位置为0的二维数组
# 单位矩阵: 主对角线都是1,其他都是0
n = np.eye(6, 6, dtype=np.int8)
n
array([[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1]], dtype=int8)
# k=2 : 向右偏移2个位置
n = np.eye(6, 6, k=2, dtype=np.int8)
# k=-2 : 向左偏移2个位置
n = np.eye(6, 6, k=-2, dtype=np.int8)
n
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 1, 0, 0]], dtype=int8)
2. 从现有数组中生成
np.array(object, dtype)
np.asarray(a, dtype)
a = np.array([[1,2,3],[4,5,6]])
# 从现有的数组当中创建
a1 = np.array(a)
# 相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)
array和asarray的不同:
3. 生成固定范围的数组
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
创建一个等差数列
参数说明:
start: 开始值
stop: 结束值
num=50: 等差数列中默认有50个数
endpoint=True: 是否包含结束值
retstep=False: 是否返回等差值(步长)
dtype=None: 元素类型
# 等差数列
# 1, 3, 5, 7, 9
n = np.linspace(0, 100, num=51, dtype=np.int16)
n
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50,
52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100],
dtype=int16)
# endpoint=False
n = np.linspace(0, 100, num=51, endpoint=False)
n
array([ 0. , 1.96078431, 3.92156863, 5.88235294, 7.84313725,
9.80392157, 11.76470588, 13.7254902 , 15.68627451, 17.64705882,
19.60784314, 21.56862745, 23.52941176, 25.49019608, 27.45098039,
29.41176471, 31.37254902, 33.33333333, 35.29411765, 37.25490196,
39.21568627, 41.17647059, 43.1372549 , 45.09803922, 47.05882353,
49.01960784, 50.98039216, 52.94117647, 54.90196078, 56.8627451 ,
58.82352941, 60.78431373, 62.74509804, 64.70588235, 66.66666667,
68.62745098, 70.58823529, 72.54901961, 74.50980392, 76.47058824,
78.43137255, 80.39215686, 82.35294118, 84.31372549, 86.2745098 ,
88.23529412, 90.19607843, 92.15686275, 94.11764706, 96.07843137,
98.03921569])
# retstep=True : 显示步长
n = np.linspace(0, 100, num=51, retstep=True)
n
(array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20.,
22., 24., 26., 28., 30., 32., 34., 36., 38., 40., 42.,
44., 46., 48., 50., 52., 54., 56., 58., 60., 62., 64.,
66., 68., 70., 72., 74., 76., 78., 80., 82., 84., 86.,
88., 90., 92., 94., 96., 98., 100.]),
2.0)
np.arange([start, ]stop, [step, ]dtype=None)
创建一个数值范围的数组
和Python中range功能类似
参数说明:
start : 开始值(可选)
stop: 结束值(不包含)
step: 步长(可选)
dtype=None: 元素类型
n = np.arange(10)
n
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
n = np.arange(2, 10)
n
array([2, 3, 4, 5, 6, 7, 8, 9])
n = np.arange(2, 10, 2)
n
array([2, 4, 6, 8])
np.logspace(start,stop, num)
创建等比数列
参数:
num:要生成的等比数列数量,默认为50
# 生成10^x
np.logspace(0, 2, 3)
返回结果:
array([ 1., 10., 100.])