一、Numpy-5.索引和切片

"""
    索引:
        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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值