数据分析学习笔记(一)—— Numpy

本文介绍了Numpy的高级索引、花式索引、迭代与广播机制,以及where和掩码操作。通过实例展示了如何进行数组的合并、新增维度以及查找最近邻点等操作,深入理解Numpy的广播规则和数据处理能力。
摘要由CSDN通过智能技术生成

数据分析学习笔记 —— Numpy

  1. Numpy的高级索引

Numpy的高级索引类似于zip命令,以二维数组为例,可以将一个二维数组的行索引与列索引分别提取出来,然后将两者映射到一个新的所以并对数组进行提取。

import numpy as np
x = np.array(range(32)).reshape(8,4)
print(x)
print(x[[1,2],[3,2]])
>>>[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
 [24 25 26 27]
 [28 29 30 31]]
 
[ 7 10]

如上述代码表示对整个矩阵的[1,3]与[2,2]元素做提取

  1. Numpy的花式索引

利用np.ix_可以对矩阵提取对应行后再按后面的序列排序,如下面的代码:

import numpy as np
x = np.array(range(32)).reshape(8,4)
print(x)
print(x[np.ix_([2,3,4,5],[2,0,1,3])])
>>>[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
 [24 25 26 27]
 [28 29 30 31]]
 
[[10  8  9 11]
 [14 12 13 15]
 [18 16 17 19]
 [22 20 21 23]]

上述代码表示对整个矩阵的2,3,4,5行提取并按2,0,1,3的顺序排列其列。

  1. 迭代与广播迭代

对一个多维数组进行迭代可以选择行优先模式(order = ‘C’)或者列优先模式(order = ‘F’),以及对整个轴的迭代(flags = ‘[external_loop]’),迭代语法与Python大同小异。

import numpy as np

a = np.array(range(12)).reshape(3,4)
print(a)

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 
for x in np.nditer(a,flags = ['external_loop'],order = 'F'):
    print(x)
[0 4 8]
[1 5 9]
[ 2  6 10]
[ 3  7 11]

同样的,对于两个维度不同的数组同时迭代时,广播机制会被自动触发。

import numpy as np

a = np.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值