numpy的学习-02

序列

副本与视图

  • np.ndarray.copy()会对数据创建一个副本,直接的赋值语句不会创建副本,会实现共享。

切片

切片索引[start:stop:step],其中start省略,则取0,stop省略则取数组的最大索引值,step省略,则取1。若start/stop为负数(-2),则表示倒数第几(2)个。若step为负数,则表示逆向切片。
比如:x[0::2, 1::3] ,0::2表示对行切片,1::3表示对列切片

索引…的含义

  • …替代许多:::构建完整的索引列表
    eg:x为3维数组,x[…,1]=x[::,1]

整数数组索引

  • 获取数据元素或进行元素修改:
    二维数组中:x[2][1]=x[2,1]

  • 传入多个索引值时可获取多个元素值。
    eg:x为一维数组,r=[0,2,-2] x[r]表示获取x数组的第一个,第三个和倒数第二个元素。
    eg:x为二维数组,r=[0,1,2] c=[1,2,3]
    x[r,c]表示取三个元素x[0,1] x[1,2] x[2,3]

import numpy as np
x=np.array([1,2,3,4,5,6,7,8])
r=np.array([[0,1],[3,4]])
print(x[r])
#[[1 2]
 #[4 5]]      r是二维数组,表示获取x数组的0,1,3,4号元素值
 *由于r为二维数组,x[r]的维数就是>=2,而x[0]/x[1]/x[3]/x[4]为整数值,是数组的元素,故 得到的数组维数为2*
import numpy as np
x=np.array([[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]
           ])
r=np.array([[0,1],[3,4]])
print(x[r])
#[[[ 1  2  3  4  5]
# [ 6  7  8  9 10]]
#
# [[16 17 18 19 20]
#  [21 22 23 24 25]]]
*r是二维数组,故x[r]的维数就是>=2,而x[0]/x[1]/x[3]/x[4]是一维数组,故 得到的数组维数为2+1=3,x[r]就是三维数组(2*2*5)*

r=np.array([[0,1],[3,4]])  #行索引
c=np.array([[0,1],[3,4]])  #列索引
print(x[r,c])
#[[ 1  7]
 #[19 25]]
 *r,c都是二维数组,故x[r,c]的维数>=2,而x[0][0],x[1][1],x[3][3],x[4][4]是元素值,故x[r,c]的维数是2维*

[r,c]可以为切片和数组的混合,进行数组的切片提取

x[0:3,[1,2,2]] #x为二维数组时表示取第0/1/2行的第1/2/2个元素
  • np. take(arrayname,indices{r/[r,c]})表示对数组元素的提取。
    -注意:切片索引生成的是原数组的子数组,共享。而整数数组索引是形成新数组。

布尔索引

  • 使用布尔数组来索引目标数组
    eg:x[x>5],其中,x>5会生成一个布尔数组,然后根据布尔值为真来取数组元素。
import numpy as np
x = np.array([np.nan, 1, 2, np.nan, 3, 4, 5])
y = np.logical_not(np.isnan(x))  #np.logical_not表示取反   
print(x)
print(y)
print(x[y])
#[nan  1.  2. nan  3.  4.  5.]
#[False  True  True False  True  True  True]
#[1. 2. 3. 4. 5.]        

数组迭代

np.apply_along_axis(func1d, axis, arrayname)
axis=0时,表示竖着对元素使用func1d函数
axis=1时,表示横着对元素使用func1d函数

群里组长言:索引会降低维度,切片不会!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值