numpy数组(四)

import numpy as ny



"""
和列表不同的是,通过切片获取的新数组是原始数组的一个视图。它与原始数组共享同一
块数据存储空间,所以原始数组也一定会变化
"""
a=ny.arange(10,1,-1)
b=a[3:7]
print('a:  ',a)
print('b:  ',b)
b[2]=100
print('after b:  ',b)
print('after a:  ',a)
"""
a:   [10  9  8  7  6  5  4  3  2]
b:   [7 6 5 4]
after b:   [  7   6 100   4]
after a:   [ 10   9   8   7   6 100   4   3   2]
"""
"""
 获取数组x中下标为 3、3、1、8的4 个元素,组成一个新的数组
"""
c=a[[3,3,1,8]]
d=a[ny.array([3,3,1,8])]
print('c:  ',c)
print('d:  ',d)
#多维数组也是适用的
e=a[ny.array([[3,3,1,8],[3,3,-3,8]])]
print('e:  
',e)
"""
c:   [7 7 9 2]
d:   [7 7 9 2]
e:  
 [[7 7 9 2]
 [7 7 4 2]]
"""
x = ny.random.rand(10)  # 产生一个长度为 10、元素值为0到 1 的随机数组
print('x:  ',x)
print('after x:  ',x>0.5)
print('after x:  ',x[x>0.5])
"""
x:   [0.11735827 0.14931258 0.90332179 0.69256899 0.48639278 0.99080655
 0.9962788  0.57468302 0.91736589 0.90630687]
after x:   [False False  True  True False  True  True  True  True  True]
after x:   [0.90332179 0.69256899 0.99080655 0.9962788  0.57468302 0.91736589
 0.90630687]
"""
#使用切片来访问多维数组

a=ny.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]).reshape(5,5)
print('a[0,3:5]:  ',a[0,3:5])
print('a[4:,4:]:  ',a[4:,4:])
"""
a[0,3:5]:   [4 5]
a[4:,4:]:   [[25]]
"""
a = ny.arange(0, 60, 10).reshape(-1, 1)+ny.arange(0,6)
print('a:  
',a)
"""
a:  
 [[ 0  1  2  3  4  5]
 [10 11 12 13 14 15]
 [20 21 22 23 24 25]
 [30 31 32 33 34 35]
 [40 41 42 43 44 45]
 [50 51 52 53 54 55]]
"""
#slice 对象
#在[]中可以使用以冒号隔开的两个或三个整数表示切片,但是单独生成切片对象时需要
#使用 slice()创建。它有三个参数,分别为开始值、结束值和间隔步长,当这些值需要省略时
#可以使用None

idx = slice(None, None, 2), slice(2,None)
#a[idx][idx]=a[::2,2:][::2,2:]
print('a[idx][idx]:  
',a[idx][idx])#其实相当于做了两道过滤
print('a[::2,2:]:  
',a[::2,2:])
"""
a[idx][idx]:  
 [[ 4  5]
 [44 45]]
a[::2,2:]:  
 [[ 2  3  4  5]
 [22 23 24 25]
 [42 43 44 45]]
"""
原文地址:https://www.cnblogs.com/peterleee/p/9373758.html