numpy 相关函数使用

2021-01-09 10:22:00 浏览数 (2555)

np.where

首先强调一下,where()函数对于不同的输入,返回的值是不同的。

1、当数组是一维数组时,返回的值是一维的索引,所以只有一组索引数组;

2、当数组是二维数组时,满足条件的数组值返回的是值的位置索引,因此会有两组索引数组来表示值的位置,下面举例说明:

import numpy as np
a=np.reshape(np.arange(20),(4,5))

a
array([[ 0,  1,  2,  3,  4],
      [ 5,  6,  7,  8,  9],
      [10, 11, 12, 13, 14],
      [15, 16, 17, 18, 19]])

b = np.where(a>10)
b
(array([2, 2, 2, 2, 3, 3, 3, 3, 3], dtype=int64), array([1, 2, 3, 4, 0, 1, 2, 3, 4], dtype=int64))
b[0][:]
array([2, 2, 2, 2, 3, 3, 3, 3, 3], dtype=int64)
b[0]
array([2, 2, 2, 2, 3, 3, 3, 3, 3], dtype=int64)
b[1]
array([1, 2, 3, 4, 0, 1, 2, 3, 4], dtype=int64)

a是一个二维数组,b就是返回的索引,索引分为行索引和列索引两个部分,b[0]是行索引,b[1]是列索引。

np.tile

他的功能是重复某个数组。比如tile(A,n),功能是将数组A重复n次,构成一个新的数组.例子:

import numpy as np
a = [1,2,3]
b  = np.tile(a, (1, 4))
b
array([[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]])
b  = np.tile(a, 4)
b
array([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])
d  = np.tile(a, (2, 4))
d
array([[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3],
       [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]])

从上面的例子我们可以看到,其中 b = np.tile(a, (1, 4))生成的是一个二维数组,而b = np.tile(a, 4)生成的是一个一维数组,都是把a重复4次。