numpy數組中冒號和負號的含義


numpy數組中":"和"-"的意義

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

在實際使用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 b1\n', 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]]



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM