1. 首页
  2. IT资讯

Numpy入门之 存取元素

“u003Cdivu003Eu003Cpu003ENumpy数组的元素存取方法有以下几种:u003Cu002Fpu003Eu003Colu003Eu003Cliu003E通过索引:u003Cu002Fliu003Eu003Cu002Folu003Eu003Cpreu003E>>> a = np.arange(10)u003Cbru003E>>> au003Cbru003Earray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])u003Cbru003E>>> a[5]u003Cbru003E5u003Cbru003E>>> a[5]=99u003Cbru003E>>> au003Cbru003Earray([ 0, 1, 2, 3, 4, 99, 6, 7, 8, 9])u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F1b9630fc128d44f4a26dec480293cf6d” img_width=”1152″ img_height=”440″ alt=”Numpy入门之 存取元素” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E2. 通过切片。u003Cu002Fpu003Eu003Cpu003E格式: a[起始值 : 终值 : 步长] 注意,结果不包含终值。u003Cu002Fpu003Eu003Cpreu003E>>> a[3:5]u003Cbru003Earray([3, 4])u003Cbru003E>>> a[1 : -1 : 2]u003Cbru003Earray([ 1, 3, 99, 7])u003Cbru003E>>> a[: : -1] #返回倒转的数组u003Cbru003Earray([ 9, 8, 7, 6, 99, 4, 3, 2, 1, 0])u003Cbru003E>>> a[5: 1: -2] #步长为负,终值须大于起始值u003Cbru003Earray([99, 3])u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E注意,和 Python的序列不同,通过切片获取的新数组只是原数组的一个视图,它与原数组共享内存中同一块数据空间。u003Cu002Fpu003Eu003Cpreu003E>>> b = a [3:7]u003Cbru003E>>> au003Cbru003Earray([ 0, 1, 2, 3, 4, 99, 6, 7, 8, 9])u003Cbru003E>>> bu003Cbru003Earray([ 3, 4, 99, 6])u003Cbru003E>>> b[2] = -10 # b的第2个元素改为 -10u003Cbru003E>>> bu003Cbru003Earray([ 3, 4, -10, 6])u003Cbru003E>>> a # 则a的第5个元素也是 -10u003Cbru003Earray([ 0, 1, 2, 3, 4, -10, 6, 7, 8, 9])u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002Fd0bab004-848f-4803-85bf-28194c751056″ img_width=”1200″ img_height=”791″ alt=”Numpy入门之 存取元素” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E3. 使用整数序列(列表或者numpy数组),以整数序列中每个元素为下标。u003Cstrongu003E不u003Cu002Fstrongu003E和原数组共享数据空间。u003Cu002Fpu003Eu003Cpreu003E>>> x = np.arange(10, 1, -1)u003Cbru003E>>> xu003Cbru003Earray([10, 9, 8, 7, 6, 5, 4, 3, 2])u003Cbru003E>>> x[[3, 3, 1, 8]] #组成新的数组;下标可重复u003Cbru003Earray([7, 7, 9, 2])u003Cbru003E>>> y = x [np. array([3, 3, -3, 8])] #下标可以为负u003Cbru003E>>> yu003Cbru003Earray([7, 7, 4, 2])u003Cbru003E>>> y[2] = 100u003Cbru003E>>> yu003Cbru003Earray([ 7, 7, 100, 2])u003Cbru003E>>> x # x 并未改变u003Cbru003Earray([10, 9, 8, 7, 6, 5, 4, 3, 2])u003Cbru003E>>> x[[3, 5, 1]] = -1, -2, -3 #除非直接修改X中的元素u003Cbru003E>>> xu003Cbru003Earray([10, -3, 8, -1, 6, -2, 4, 3, 2])u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fdfic-imagehandleru002Fb2835a1e-fee4-4d0b-9d16-16edcd0cfbce” img_width=”1024″ img_height=”768″ alt=”Numpy入门之 存取元素” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E4. 使用Numpy布尔数组(不能使用布尔列表)u003Cu002Fpu003Eu003Cpu003E当使用布尔数组b作为下标存取数组x中的元素时,将收集x中所有在b中对应下标为True的元素。b和x的shape必须一致。使用布尔数组作为下标获得的数组u003Cstrongu003E不u003Cu002Fstrongu003E和原数组共享数据空间。u003Cu002Fpu003Eu003Cpreu003E>>> x = np.arange(5, 0, -1)u003Cbru003E>>> xu003Cbru003Earray([5, 4, 3, 2, 1])u003Cbru003E>>> x[np.array([True, False, True, False, False])] #只有索引0和2处为True u003Cbru003Earray([5, 3]) u003Cbru003E>>> x[np.array([True, False, True, False, False])]= 88, 99u003Cbru003E>>> x #布尔数组下标也可以用来修改数组u003Cbru003Earray([88, 4, 99, 2, 1])u003Cbru003E>>> yu003Cbru003Earray([0.16772804, 0.81820098, 0.28888335, 0.42291986, 0.52946349, 0.64959717, 0.38833821, 0.2741533 , 0.89116668, 0.53912339])u003Cbru003E>>>y > 0.5 # y中每个元素和0.5比较,得到一个布尔数组u003Cbru003Earray([False, True, False, False, True, True, False, False, True, True])u003Cbru003E>>> y[y>0.5] #这样就提取了y中所有大于0.5的元素u003Cbru003Earray([0.81820098, 0.52946349, 0.64959717, 0.89116668, 0.53912339])u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E这里顺便讲一下布尔数组的常用的布尔运算:u003Cu002Fpu003Eu003Cpreu003E>>> x = np.array([True, False,True, False])u003Cbru003E>>> x.any() #至少有一个元素为True,则返回Trueu003Cbru003ETrueu003Cbru003E>>> x.all() #所有元素都为True,才返回Trueu003Cbru003EFalseu003Cbru003E>>> np.array([True]) == 1u003Cbru003Earray([ True])u003Cbru003E>>> x.sum() #可以返回True的个数(numpy 中True为 1)u003Cbru003E2u003Cbru003E>>> ~x # 逻辑非 NOTu003Cbru003Earray([False, True, False, True])u003Cbru003E>>> xu003Cbru003Earray([ True, False, True, False])u003Cbru003E>>> yu003Cbru003Earray([False, True, False, False])u003Cbru003E>>> x + y # 逻辑或 ORu003Cbru003Earray([ True, True, True, False])u003Cbru003E>>> x * y # 逻辑与 ANDu003Cbru003Earray([False, False, False, False])u003Cbru003E>>> x ^ y # 逻辑异或 XOR(对应元素不同,则结果的对应元素为True,否则False)array([ True, True, True, False])u003Cbru003Eu003Cbru003Eu003Cu002Fpreu003Eu003Cu002Fdivu003E”

原文始发于:Numpy入门之 存取元素

主题测试文章,只做测试使用。发布者:玩家L-,转转请注明出处:http://www.cxybcw.com/10616.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code