NumPy进阶

数组算术

任何两个等尺寸数组之间的算术操作都应用了逐元素操作的方式。

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])
  • 布尔索引可以使用逻辑运算符 & 合 |
  • 也可以使用<  <=  >  >=   = !=

神奇索引

  • 神奇索引与切片不同,总是将数据复制到一个新的数组中

数组转置与换轴

针对二维

原文地址:https://www.cnblogs.com/qianslup/p/11160896.html