文章目录
ndarray
ndarray:numpy的N维数组对象,其中的所有元素必须是相同的数据类型
属性和方法的区别:
属性没有参数,不需要括号;
方法有参数,有括号
2. 属性
- ndarray.shape
- ndarray.dtype
- 方法
- ndarray.astype()
1.1 创建numpy数组 ndarray
- np.array() :将输入数据(列表、元组、数组等)转化为ndarray
list = [[1, 2, 3], [4, 5, 6]]
data = np.array(list)
- asarray 将输入转为ndarray
data1 = np.asarray(data)
- arange 类似于内置的range
np.arange(15)
- ones, ones_like
- zeros, zeros_like
- empty, empty_like
- eye, identity
1.2 ndarray的数据类型
整型、浮点型、复数、字符、对象、布尔
ndarray.dtype 属性
通过astype方法显式地转换其dtype
data1_1 = data1.astype(np.float64)
data1_1.dtype
1.3 数组与标量之间的运算
相同大小的数组算术运算是元素级的运算。
数组与标量的算术运算也是元素级的运算。
不同大小的数组之间的运算叫广播(broadcasting)。
1.4 索引和切片 0-based
重点:
- 复制与视图
- 索引切片后的数组大小ndarray.shape
- 一维数组:
a[5]
b = a[5:8]
复制与视图
ndarray数组是原始数组的视图,数据本身不会被复制。
即data_copy和data共享一块物理内存,在data_copy上的任何操作都会反应到data上。反之亦然。
显式复制
data_copy1 = data.copy()
data = np.arange(15)
data_copy = data[10:]
data_copy[1] = 100
data
data
Out[21]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
data_copy
Out[22]: array([10, 11, 12, 13, 14])
data_copy[1] = 100
data
Out[23]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 12,
13, 14])
data_copy
Out[24]: array([ 10, 100, 12, 13, 14])
data_copy1 = data[10:].copy()
data_copy1[1] = 1000
data
data
Out[29]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 12,
13, 14])
- 多维数组
对于N维数组而言,索引可以是数字,也可以是1维数组。
若N维数组a的大小是(3,4,5),可以把(3,4,5)理解为三个不同的轴。
a[0][1] == a[0,