NumPy辟邪剑谱——进阶篇

阿里云2000元红包!本站用户参与享受九折优惠!

前言

这里是Numpy辟邪剑谱进阶篇,之前还有一篇入门篇,没看的同学可以点传送门:NumPy辟邪剑谱——入门篇

再次声明,以下内容大多来自《利用python进行数据分析》一书,非常值得拥有的一本书。


1.bool过滤

# 1. bool过滤
names = np.array(['Ada', 'Bob', 'Jack', 'Joe', 'Bob', 'Will', 'Joe'])
data = np.random.randn(7, 4)
how_many_bob = names == 'Bob'
# print(how_many_bob)     # 一个包含True or False的array,'Bob'所在的位置标为True,否则标为False。
# 将'Bob'的数据过滤出来
# bob_data = data[how_many_bob]
# print(bob_data)
# 如果我想拿到'Bob'的前3列数据呢?
# bob_data_column3 = data[how_many_bob, :3]
# print(bob_data_column3)
# 如果我只想拿到'Bob'的第3列数据呢?
# bob_data_column2 = data[how_many_bob, 2]
# print(bob_data_column2)
# 如果我想拿到除了'Bob'之外其他人的数据呢?需要用到 != 或者 ~
# ~ 符号,在对通用条件进行取反时比较常用。
# except_bob_data1 = data[names != 'Bob']
# print(except_bob_data1)
#
# except_bob_data2 = data[~(names == 'Bob')]
# print(except_bob_data2)
# 如果我需要拿到'Bob'和'Joe'的数据呢?
# 就需要让多个bool条件联合,需要用到数学操作符 &(and) 和 |(or)
# Note: Python中的 and 和 or 在这里是没有作用的,只能用 & 和 | 操作符
# mask = (names == 'Bob') | (names == 'Joe')
# bob_joe_data = data[mask]
# print(bob_joe_data)
# 如果我想把data中所有的负数都设置为0呢?
# data[data < 0] = 0
# print(data)
# 利用bool条件,还可以将筛选出的元素进行赋值
# 比如我想把'Bob'的数据都改成250
# data[names == 'Bob'] = 250
# print(data)

2. 神奇索引

# 2. 神奇索引
# '神奇索引'是Numpy中的术语,用于描述使用整数数组进行数据索引。
# 假设我们有一个 8 * 4 的数组,让它的第一列都为1,第二列都为2,以此类推。
arr = np.empty((8, 4))
for i in range(8):
    arr[i] = i
# 我们可以指定一个序列,序列中的值是我想获取的索引(第几行),可选值为0~7
# index = [3, 2, 0, 7]
# filtered_arr = arr[index]
# print(filtered_arr)
# 当然,在我们python中还可以进行反向索引
# reverse_index = [-1, -3, -4]
# filtered_arr2 = arr[reverse_index]
# print(filtered_arr2)
# 如果我想根据指定位置来筛选数据呢?
# 当然可以,那么可以通过传递两个数组进行筛选。
selected_element = arr[[1, 3, 5, 7], [0, 3, 2, 1]]
# 第一个list的元素表示第几行,第二个list中的元素表示第几列
# 那么上述表示的就是:(1,0), (3,3), (5,2), (7,1)
print(selected_element)

https://www.jianshu.com/p/2437423ecfa6

Python量化投资网携手4326手游为资深游戏玩家推荐:《全能工具箱下载

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论