机器学习基础 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

Numpy数组的创建

创建Numpy数组可通过多种途径。

例如,你可以通过常规Python list来创建,也可以借助坐标与值的关系函数来创建。创建过程中数据类型不会发生改变。

import numpy as np
a = np.array([2,3,4])
print(a)
'''
array([2, 3, 4])
'''
print(a.dtype)    #dtype('int64')
b = np.array([1.2, 3.5, 5.1])
print(b.dtype)    #dtype('float64')

最常发生的错误是创建数组时输入的参数忘了加方括号。

a = np.array(1,2,3,4)    # 错误
a = np.array([1,2,3,4])  # 正确

数组会将序列的序列转化为二维数组,会将序列的序列的序列转化为三维数组,以此类推。

b = np.array([(1.5,2,3), (4,5,6)])
print(b)
'''
array([[ 1.5,  2. ,  3. ],
       [ 4. ,  5. ,  6. ]])
'''

数组元素的类型可以在数组创建时显式定义。

c=np.array([[1,2],[3,4]],dtype=complex)
print(c)
'''
array([[ 1.+0.j,  2.+0.j],
       [ 3.+0.j,  4.+0.j]])
'''

通常情况下,数组元素的类型是未知的,但包含的元素数量是已知的。因此,Numpy提供了通过指定数组形状创建数组的方法。zeros函数创建的数组的元素都是0,ones函数创建的数组的元素都是1,empty函数创建的数组的元素都极大或极小或为0,默认状态下,创建的数组的元素类型是float64

print(np.zeros( (3,4)))
'''
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
'''
print(np.ones((2,3,4),dtype=np.int16))
'''
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]]], dtype=int16)
'''
print(np.empty((2,3)))     #输出是随机的,例如:
'''
array([[  3.73603959e-262,   6.02658058e-154,   6.55490914e-260],
       [  5.30498948e-313,   3.14673309e-307,   1.00000000e+000]])
'''

Numpy可以通过arange函数直接创建等差序列数组,3个参数分别表示首值、上界、间隔值

print(np.arange(10, 30, 5))    #array([10, 15, 20, 25])
print(np.arange(0,2,0.3))    #array([0.,0.3,0.6,0.9,1.2,1.5,1.8])

如果不知道间隔值但知道等差数组元素个数,可以使用linspace,3个参数分别为首值、末值、个数。

from numpy import pi
print(np.linspace(0,2,9))    #array([0.,0.25,0.5,0.75,1.,1.25,1.5,1.75,2.])
示例代码:Numpy-array-create.py