1、元素的重复操作(repeat与tail)
repeat是元素级别的,tail是数组级别的
print('Repeat: 按元素')
arr = np.arange(3)
print(arr)
print(arr.repeat(3))
print(arr.repeat([2, 3, 4])) # 3个元素,分别复制2, 3, 4次。长度要匹配!
print
print('Repeat,指定轴')
arr = np_random.randn(2, 2)
print(arr)
print(arr.repeat(2, axis = 0))# 按行repeat
print(arr.repeat(2, axis = 1))# 按列repeat
print
print('Tile: 参考贴瓷砖')
print(np.tile(arr, 2))
print(np.tile(arr, (2, 3))) # 指定每个轴的tile次数
# 结果
Repeat: 按元素
[0 1 2]
[0 0 0 1 1 1 2 2 2]
[0 0 1 1 1 2 2 2 2]
Repeat,指定轴
[[-0.66497955 0.86825718]
[ 0.35759952 -0.44069729]]
[[-0.66497955 0.86825718]
[-0.66497955 0.86825718]
[ 0.35759952 -0.44069729]
[ 0.35759952 -0.44069729]]
[[-0.66497955 -0.66497955 0.86825718 0.86825718]
[ 0.35759952 0.35759952 -0.44069729 -0.44069729]]
Tile: 参考贴瓷砖
[[-0.66497955 0.86825718 -0.66497955 0.86825718]
[ 0.35759952 -0.44069729 0.35759952 -0.44069729]]
[[-0.66497955 0.86825718 -0.66497955 0.86825718 -0.66497955 0.86825718]
[ 0.35759952 -0.44069729 0.35759952 -0.44069729 0.35759952 -0.44069729]
[-0.66497955 0.86825718 -0.66497955 0.86825718 -0.66497955 0.86825718]
[ 0.35759952 -0.44069729 0.35759952 -0.44069729 0.35759952 -0.44069729]]
2、take与put——花式索引
# 花式索引
arr = np.arange(10) * 100
inds = [7, 1, 2, 6]
print(arr[inds])
# 与上面的等价
print(arr.take(inds))
# 使用put更新内容
arr.put(inds, 50)
print(arr)
arr.put(inds, [70,10,20,60])
print(arr)
arr = np_random.randn(2,4)
inds = [2, 0, 2, -1]
print(arr)
# 指定轴 按照列进行 该列输出 第二列 第0列 第2列 最后一列的数
print(arr.take(inds, axis=1))