数组算术
任何两个等尺寸数组之间的算术操作都应用了逐元素操作的方式。
arr1 = np.array([[1,2,3],[4,5,6]]) arr2 = np.array([[4,2,1],[7,2,4]]) print(arr1 + arr2) print('---分隔符---') print(1/arr1) print('---分隔符---') print(arr1 > arr2)
索引与切片
list1 = list(range(10)) array1 = np.array(list_1) list1_slice = list1[5:8] array1_slice = array1[5:8] array1_copy = array1.copy() list1_slice[1] = 12 array1_slice[1] = 12 array1_copy[-1] = 20 print(list1) #out:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(array1) #out:[ 0 1 2 3 4 8 12 7 8 9]
- 数组的切片是原数组的视图,数据并非被复制,任何对于视图的修改都会反映到数组上。
- 列表的切片则是复制原列表,在切片中更改不会影响原列表。
- 想要数组的切片的拷贝,可以显示的复制该数组,例如array1_copy = array1.copy()
多维数组
arr = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(arr[1]) #out:[4 5 6] print(arr[1][1]) #out:5 print(arr[1,1]) #out:5 print(arr[1:,1]) #out:[5 8] print(arr[1:,1:]) #[[5 6] # [8 9]]
布尔索引
arr_b = np.array([False,True,True,False]) arr_a = np.arange(4) arr_a[arr_b] #out:array([1, 2]) #取反操作 arr_a[~arr_b] #out:array([0, 3])
- 布尔索引可以使用逻辑运算符 & 合 |
- 也可以使用< <= > >= = !=
神奇索引
- 神奇索引与切片不同,总是将数据复制到一个新的数组中