4 如何读取数组

0 阅读2分钟

在 NumPy 里,大部分的操作都是使用 ndarray 來完成,ndarray 是一個快速的且可以节省空间的数组

读取方式

方法说明
索引值读取根据数组的索引值读取
切片读取使用 类 似串列切片 slice 的方式,取出某一個范围的元素
布尔值读取使用布尔值筛选符合条件的元素

索引值读取

import numpy as np

a = np.array([1,2,3,4,5])
print(a[0]) #1
print(a[1]) #2
print(a[2]) #3

多维数组 指定 [索引值串列],读取对应的元素

import numpy as np

a = np.array([[1,2,3],[4,5,6]])
print(a[0,0])  # 1
print(a[1,1])  # 5

image.png

三维数组读取

import numpy as np

a = np.array(
[
    [
        [1,2],[3,4]],
        [[5,6],[7,8]
    ]
]
)
print(a[0,0,0])    # 1
print(a[0,1,0])    # 3
print(a[1,0,1])    # 6
print(a[1,1,1])    # 8

切片读取

import numpy as np

a = np.array([1,2,3,4,5,6,7,8,9])
# 从第三个取值到第五个(不包括第6个)
print(a[2:5])  
# 从第一项取值到第五个
print(a[:5])    
# 从第三项开始取值到最后
print(a[2:]) 
# 从第三项取值到倒数第二项
print(a[2:-1])  
# 间隔取值 间隔2个
print(a[::2])  
# 从第三项到第七项,间隔2
print(a[2:8:2]) 
# 数组翻转
print(a[::-1])  
# 取出 第二 第四 第六 第8项
print(a[[1,3,5,7]])  

对于多维数组 ,切片后会产生新的数组

import numpy as np

a = np.array([
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15]
])
print(a[0, 2:4])    # [3 4]
print(a[1:, 2:4])
'''
[[ 8  9]
 [13 14]]
'''
print(a[:, 2:4])
'''
[[ 3  4]
 [ 8  9]
 [13 14]]
'''

布尔值读取

读取数组的时候,可以使用布尔值进行筛选,为 True 的保留,为 False 的丢弃,使其成为一个筛选后的新数组

一维数组

import numpy as np

a = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
# 筛选大于5
print(a[a>5])
# 筛选为偶数的元素
print(a[a%2==0])
# 筛选大于5且小12的元素
print(a[(a>5) & (a<12)])

多维数组

import numpy as np

b = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])
print(b[:]>5)
print(b[b[:]>3])