写一个(3,4,4)的数组
.ndim是查看维度 .shape是查看形状
除非特意指定(见 4.1.2 节),否则 numpy.array 会尝试为新建的数组推断出合适的数 据类型。数据类型保存在一个特殊的元数据对象 dtype 中。用.dtype就可以查找到数据类型
np.zeros和np.ones可以制造全0和全1的数组 比如np.zeros((3,2,6))
.astype可以转换数据类型 比如data.astype(np.float64)
一.numpy的运算
切片 [:] 会给数组中的所有值赋值:
如果你想得到 ndarray 切片的副本而非视图,就需要显式地复制数组,例如 arr[5:8].copy()
切片如data[:2,1:]这个就会识别为矩阵的前两行和后第一列之后的所有列
花式索引
在 arr1 = arr[[4, 3, 0, 6]]
中使用两个方括号是因为这里使用了高级索引。
当使用一个列表或数组作为索引时,需要将索引放在一对方括号内,并且如果有多个索引值,每个索引值也需要放在一个列表中,这个列表再放在外层的方括号中。
例如,这里 [4, 3, 0, 6]
是一个列表,表示要从原始数组 arr
中选取第 4 行、第 3 行、第 0 行和第 6 行,外层的方括号将这个索引列表括起来,告诉 NumPy 使用这些索引值进行高级索引操作。如果只使用一个方括号,就不是高级索引的正确语法形式了。
也可以用两个索引如下图
接上一个arr
-
arr1=arr[[1,5,7,2]][:,[0,3,1,2]]
:arr[[1,5,7,2]]
使用高级索引,从原始数组中选取第 1 行、第 5 行、第 7 行和第 2 行,形成一个新的数组。[:,[0,3,1,2]]
对这个新数组进行切片操作,选取所有行,但是列的顺序变为第 0 列、第 3 列、第 1 列和第 2 列。
- 花式索引(Fancy Indexing) 和 切片索引(Slicing) 在处理赋值操作时有不同的行为。
- 当你用花式索引从数组中选取元素时,NumPy 会复制这些数据到一个新的数组中,所以不会直接影响原数组。
- 但是,如果你用花式索引来给某些元素赋值,则会直接修改原数组中被索引的那些元素。