"""
索引:
1.一维数组的索引和Python的列表的功能差不多
2.对于高维数组,各索引位置上的元素不再是标量,而是相应的n维数组
获取其中的元素可以使用【以逗号隔开的索引列表】来选取
"""
import numpy as np
arr_1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr_1)
print(arr_1[0]) # [1 2 3 4]
print(arr_1[0, 1]) # 2
"""
切片:
着重多维数组,以二维数组为例:
"""
arr_2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr_2[:2])
"""
[[1 2 3 4]
[5 6 7 8]]
"""
print(arr_2[:, :2])
"""
[[ 1 2]
[ 5 6]
[ 9 10]]
"""
print(arr_2[1:3, 1:])
"""
[[ 6 7 8]
[10 11 12]]
"""
"""
布尔型索引:
使用布尔型索引必须要保证【布尔型数组的长度】必须跟被索引的【轴长度】一致,此外,还可以将布尔型数组跟切片、整数(或整数序列)混合使用
布尔值条件:
三种取值:== != ~(取反)
当要选择多个布尔值条件时,需要使用布尔算术运算符,如&和|,Python的关键字and和or对布尔值数组并没有用,请使用&和|来代替
注意:当时用布尔值索引选择数据时,总是生成数据的拷贝,即时返回的数组并没有任何变化
"""
import numpy as np
names = np.array(["Bob", "Joe", "Will", "Bob", "Will", "Joe", "Joe"])
data = np.random.randn(7, 4)
print(names)
print(names == "Bob") # 取names=="Bob"的布尔型数据
print(data)
print(data[names == "Bob"]) # 取为True的数据
print(data[names == "Bob", 2:])
print(data[names != "Bob"])
cond = names == "Bob"
print(data[~cond])
'''
基于常识来设置布尔值数组的值也是可行的
'''
# 将data中所有的负值设为0
data[data < 0] = 0
print(data)
"""
利用一维布尔值数组对每一行或每一列设置数值也是可以的
"""
data[names != "Bob"] = 7
print(data)
一、Numpy-5.索引和切片
最新推荐文章于 2024-10-01 05:04:32 发布