Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度

1. 创建一个 [3,5] 所有元素为 True 的数组

In [162]: b = np.ones((3,5), dtype=bool)

In [163]: b
Out[163]: 
array([[ True,  True,  True,  True,  True],
       [ True,  True,  True,  True,  True],
       [ True,  True,  True,  True,  True]])

In [164]: 

2. 一维数组转二维数组

In [164]: a = np.array([1,2,3,4,5,6])

In [165]: a
Out[165]: array([1, 2, 3, 4, 5, 6])

In [166]: a.reshape((2,3))
Out[166]: 
array([[1, 2, 3],
       [4, 5, 6]])

In [167]: a.reshape(2,-1)
Out[167]: 
array([[1, 2, 3],
       [4, 5, 6]])
In [168]: 

a.reshape(2,-1) 其实这里面的 -1 代表自动生成的意思,因为一共 6 个元素,已经确定了 2 行,那么只能是每行 3 个元素了。

3. 数组所有奇数替换为 -1

In [167]: a
Out[167]: array([1, 2, 3, 4, 5, 6])

In [168]: b = a.reshape((2,3))

In [169]: b
Out[169]: 
array([[1, 2, 3],
       [4, 5, 6]])

In [170]: b[b%2==1] = -1

In [171]: b
Out[171]: 
array([[-1,  2, -1],
       [ 4, -1,  6]])

In [172]: 

4. 提取出数组中所有奇数

In [176]: a = np.array([1,2,3,4,5])

In [177]: a
Out[177]: array([1, 2, 3, 4, 5])

In [178]: a[a%2==1]
Out[178]: array([1, 3, 5])

In [179]: 

5. 2 个 NumPy 数组的交集

使用 np.intersect1d 函数可以求两个数组的交集

In [179]: a
Out[179]: array([1, 2, 3, 4, 5])

In [180]: b = np.array([2,3,6,7])

In [181]: b
Out[181]: array([2, 3, 6, 7])

In [183]: np.intersect1d(a,b)
Out[183]: array([2, 3])

In [184]: 

6. 2 个 NumPy 数组的差集

np.setdiff1d(a, b) 可以计算两个数组 a 和 b 的差集。

In [186]: a
Out[186]: array([1, 2, 3, 4, 5])

In [187]: b
Out[187]: array([2, 3, 6, 7])

In [188]: np.setdiff1d(a, b)
Out[188]: array([1, 4, 5])

In [189]: np.setdiff1d(b, a)
Out[189]: array([6, 7])

In [190]: 

7. 筛选出指定区间内的所有元素

注意:(m >2),必须要添加一对括号。

In [193]: m = np.arange(10).reshape(2, 5)

In [194]: m
Out[194]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [195]: m[(m > 2) & (m < 6)]
Out[195]: array([3, 4, 5])

In [196]: 

8. 交换二维数组的多列

In [196]: m =np.arange(10).reshape((2,5))

In [197]: m
Out[197]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [198]: m[:,[1,0,4,3,2]]
Out[198]: 
array([[1, 0, 4, 3, 2],
       [6, 5, 9, 8, 7]])

In [199]: 

9. 二维数组,反转行

In [199]: m =np.arange(10).reshape(2,5)

In [200]: m
Out[200]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [201]: m[::-1]
Out[201]: 
array([[5, 6, 7, 8, 9],
       [0, 1, 2, 3, 4]])

In [202]: 

10. 生成数值 5~10、shape 为 (3,5) 的随机浮点数

In [203]: np.random.seed(100)

In [204]: np.random.randint(5, 10, (3,5))
Out[204]: 
array([[5, 5, 8, 5, 7],
       [9, 7, 7, 7, 7],
       [6, 5, 5, 9, 8]])

In [205]: np.random.rand(3,5)
Out[205]: 
array([[0.20920212, 0.18532822, 0.10837689, 0.21969749, 0.97862378],
       [0.81168315, 0.17194101, 0.81622475, 0.27407375, 0.43170418],
       [0.94002982, 0.81764938, 0.33611195, 0.17541045, 0.37283205]])

In [206]: np.random.randint(5, 10, (3,5)) + np.random.rand(3,5)
Out[206]: 
array([[5.89054594, 7.5769015 , 6.74247969, 6.63018394, 8.58184219],
       [7.02043913, 8.21002658, 5.54468488, 6.76911517, 5.25069523],
       [9.28589569, 7.85239509, 5.97500649, 5.88485329, 7.35950784]])

In [207]: 

11. 数组维度交换

In [60]: a = np.arange(10).reshape(2,5)

In [61]: a
Out[61]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [62]: b = a.swapaxes(0, 1)

In [63]: b.shape
Out[63]: (5, 2)

In [64]: 

swapaxes() 将一个数组的第 0 轴和第 1 轴进行了交换,由 2 行 5 列变成了 5 行 2列。

12. 多维数组转一维数组

In [65]: a = np.arange(10).reshape(2,5)

In [66]: a
Out[66]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [67]: a.reshape(-1)
Out[67]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [68]: a
Out[68]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [70]: a.flatten()
Out[70]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [71]: a
Out[71]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [72]: a.ravel()
Out[72]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [73]: 

可以看出我们通过 reshape(-1)flatten()ravel() 函数都可以将多维数组转换为 1 维数组。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值