numpy数组中冒号和负号的含义

时间:2022-07-23
本文章向大家介绍numpy数组中冒号和负号的含义,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

numpy数组中":"和"-"的意义

在实际使用numpy时,我们常常会使用numpy数组的-1维度和":"用以调用numpy数组中的元素。也经常因为数组的维度而感到困惑。

  • 总体来说,":"用以表示当前维度的所有子模块
  • "-1"用以表示当前维度所有子模块最后一个,"负号用以表示从后往前数的元素,-n即是表示从后往前数的第n个元素"#分片功能

a[1: ] 表示该列表中的第1个元素到最后一个元素,而,a[ : n]表示从第0个元素到第n个元素(不包括n)

import numpy as np

POP_SIZE = 3
total_size = 10
idx = np.arange(total_size)
good_idx_1 = idx[-POP_SIZE:]
good_idx_2 = idx[:-POP_SIZE]
good_idx_3 = idx[POP_SIZE:]
good_idx_4 = idx[:POP_SIZE]

print("good_idx_1", good_idx_1)
print("good_idx_2", good_idx_2)
print("good_idx_3", good_idx_3)
print("good_idx_4", good_idx_4)

# good_idx_1 [7 8 9]
# good_idx_2 [0 1 2 3 4 5 6]
# good_idx_3 [3 4 5 6 7 8 9]
# good_idx_4 [0 1 2]

测试代码

import numpy as np

b = np.arange(start=0, stop=24, dtype=int)

print('b.shape', b.shape)
# b.shape (24,)
b1 = b.reshape((4, 2, 3))
print('the value of b1n', b1)
# the value of b1
#  [[[ 0  1  2]
#   [ 3  4  5]]
#
#  [[ 6  7  8]
#   [ 9 10 11]]
#
#  [[12 13 14]
#   [15 16 17]]
#
#  [[18 19 20]
#   [21 22 23]]]

print('b1[-1]n', b1[-1])
# 从最外层的维度分解出最后一个模块
# b1[-1]
# [[18 19 20]
#  [21 22 23]]
for a in b1[-1]:
    print('s')
# 在这个模块中有两个小的模块,所以程序运行两次
# s
# s

print('b1[:-1]n', b1[:-1])
# 从最外层的模块中分解出除最后一个子模块后其余的模块

# b1[:-1]
#  [[[ 0  1  2]
#   [ 3  4  5]]
#
#  [[ 6  7  8]
#   [ 9 10 11]]
#
#  [[12 13 14]
#   [15 16 17]]]
for a1 in b1[:-1]:
    print('s')
# 在这个模块中有三个小的模块,所以程序运行两次
# s
# s
# s

print('b1[-1:]n', b1[-1:])
# 写在最后一个维度的":"没有实质性作用,此处表示的意思和b1[-1]相同
# b1[-1:]
#  [[[18 19 20]
#   [21 22 23]]]

print('b1[:,-1]n', b1[:, -1])
# 表示取出最外层的所有维度后每一个子模块中选择最后一个子模块
# b1[:,-1]
#  [[ 3  4  5]
#  [ 9 10 11]
#  [15 16 17]
#  [21 22 23]]

print('b1[:,:,-1]n', b1[:, :, -1])
# 表示取最里层维度的最后一个元素重新组成新的元组
# b1[:,:,-1]
#  [[ 2  5]
#  [ 8 11]
#  [14 17]
#  [20 23]]