生成索引数组API(demo)
arr1 = np.arange(3) # [0 1 2]
arr2 = np.arange(3, 6) # [3 4 5]
arr3 = np.arange(6).reshape(2, -1) # [[0 1 2] [3 4 5]]
arr4 = np.arange(6, 12).reshape(2, -1) # [[ 6 7 8] [ 9 10 11]]
c_ :将切片对象转换为沿第二轴的连接。
np.c_[arr1, arr2] # [[0 3] [1 4] [2 5]]
np.c_[arr3, arr4] # [[ 0 1 2 6 7 8] [ 3 4 5 9 10 11]]
总结: 可以理解为同一索引拼接
r_ 将切片对象转换为沿第一轴的连接。
np.r_[arr1, arr2] # [0 1 2 3 4 5]
np.r_[arr3, arr4] # [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]]
总结: 数组相加
s_ 为数组构建索引元组的更好方法。
np.s_[arr1, arr2] # (array([0, 1, 2]), array([3, 4, 5]))
np.s_[arr3, arr4] # (array([[0, 1, 2],[3, 4, 5]]), array([[ 6, 7, 8],[ 9, 10, 11]]))
nonzero(a) 返回非零元素的索引。
np.nonzero(arr1) # (array([1, 2]),)
arr1[np.nonzero(arr1)[0]] # [1 2]
where(condition, [x, y]) 返回元素,可以是x或y,具体取决于条件。
np.where(arr1 > 1)[0] # [1 2]
#where赋值:
np.where(arr1 % 2 == 1, -1, arr1) #[ 0 -1 2] 这边结果对arr1无影响