numpy的ndarray
ndarray:一种多维数组对象,ndarray是一个通用的同构数据多维容器,即其中的每一个元素必须是相同类型的。当元素的类型不同时,系统会强制转换数据类型。每个数组都有一个shape(一个表示各维度大小的元组)和有一个dtype(一个用于说明数据类型的对象)
使用np.ndarray()创建数组时,参数为一个序列,这个参数中元素的个数表示该数组的维度,从第一个元素开始表示每个维度元素的多少,如下面的例子,三个元素得到了一个三维数组,第一个元素是1,表示这个三维数组只有一个二维数组元素,第二个元素为2,表示每个二维数组元素中包含两个一维数组,最后的3表示每个一位数组有三个元素。(这些元素均是系统自带的,无实际意义),dtype指定元素类型。
a = np.ndarray([1,2,3],dtype=np.float64)
a
array([[[3.44900708e-307, 2.09483834e-321, 0.00000000e+000],
[1.02455032e-311, 0.00000000e+000, 3.25060610e-319]]])
使用np.array()可以创建指定元素的多维数组
#一维数组
a = np.array([1,2,3])
a
array([1, 2, 3])
a.shape
(3,)
a.dtype
dtype('int32')
#二维数组
b = np.array(((1,2,3),(4,5,6),(7,8,9)))
b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b.shape
(3, 3)
b.dtype
dtype('int32')
#三维数组
c = np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]]],dtype=np.float64)
c
array([[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]],
[[10., 11., 12.],
[13., 14., 15.],
[16., 17., 18.]]])
c.shape
(2, 3, 3)
c.dtype
dtype('float64')
b = np.asarray(({1:1,2:2,3:3},{4,5,6},{7,8,9}))
b
array([{1: 1, 2: 2, 3: 3}, {4, 5, 6}, {8, 9, 7}], dtype=object)
b = np.array(({1:1,2:2,3:3},{4,5,6},{7,8,9}))
b
array([{1: 1, 2: 2, 3: 3}, {4, 5, 6}, {8, 9, 7}], dtype=object)
d = np.array(({1,2,3},{4,5,6},{7,8,9}))
d
array([{1, 2, 3}, {4, 5, 6}, {8, 9, 7}], dtype=object)
d.shape
(3,)
d.dtype
dtype('O')
d = np.array(({1:1,2:2,3:3},{4,5,6},{7,8,9}))
d.shape
(3,)
d.dtype
dtype('O')
使用zeros和zeros_like创建多维数组
a = np.zeros(5)
a
array([0., 0., 0., 0., 0.])
b = np.zeros_like([1,2,3,4,5])
b
array([0, 0, 0, 0, 0])
a1 = np.zeros((3,3))
a1
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
使用ones和ones_like创建多维数组
a = np.ones((3))
a
array([1., 1., 1.])
b = np.ones_like([1,2,3,4,5])
b
array([1, 1, 1, 1, 1])
使用empty和empty_like创建数组
a = np.empty((1,2,3))
a
array([[[3.44900708e-307, 2.09483834e-321, 0.00000000e+000],
[1.02455032e-311, 0.00000000e+000, 3.25060610e-319]]])
a = np.empty_like([1,2,3])
a
array([1, 2, 3])
使用arange创建数组
a = np.arange(5)
a
array([0, 1, 2, 3, 4])
使用eye和identity创建数组
a = np.eye((5))
a
array([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
b = np.identity((5))
b
array([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
函数 | 说明 |
---|---|
array | 将输入数据(列表、元组、数组或其他序列类型)转换为ndarray,要么推断出dtype,要么显式指定dtype.默认直接复制输入数据 |
asarray | 将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制 |
arange | 类似于内置的range,但返回的是一个ndarray而不是列表 |
ones、ones_like | 根据指定的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组 |
zeros、zeros_like | 类似于ones和ones_like,只不过产生的是全0数组 |
empty、empty_like | 创建新数组,只分配内存空间但不填充任何值 |
eye、identity | 创建一个正方的N * N单位矩阵(对角线为1,其余为0) |