numpy库函数积累【持续更新中······】

1 np.mgrid()
z = np.mgrid[1:5:4j, 1:3:3j]
np.mgrid输出返回一个三维向量;其中的元素z[0]、z[1]都是二维矩阵;
表示1:5切片均匀取数,取4个;1:3切片均匀取数,取3个

print(z)
[[[1.         1.         1.        ]
  [2.33333333 2.33333333 2.33333333]
  [3.66666667 3.66666667 3.66666667]
  [5.         5.         5.        ]]

 [[1.         2.         3.        ]
  [1.         2.         3.        ]
  [1.         2.         3.        ]
  [1.         2.         3.        ]]]

2 np.meshgrid()
# 生成网格点坐标矩阵
np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.0, 1.0, 0.1))
表示该网格点的横坐标、纵坐标范围及步长。
3 numpy.ravel() vs numpy.flatten()

// 单词ravel v. 使更复杂; 使更纷乱
     首先声明两者所要实现的功能是一致的(将多维数组降为一维),两者的区别在于返回拷贝(copy)还是返回视图(view)。
     numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响原始矩阵;而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用&的意味),会影响原始矩阵。

 # 两者的功能
>>> x = np.array([[1, 2], [3, 4]])
>>> x.flatten()
array([1, 2, 3, 4])
>>> x.ravel()
array([1, 2, 3, 4])  # 两者默认均是行序优先
>>> x.flatten('F')
array([1, 3, 2, 4])
>>> x.ravel('F')
array([1, 3, 2, 4])

# 两者的区别
>>> x = np.array([[1, 2], [3, 4]])
>>> x.flatten()[1] = 100
>>> x
array([[1, 2],
       [3, 4]])            # flatten:返回的是拷贝
>>> x.ravel()[1] = 100
>>> x
array([[ 1, 100],
       [ 3,  4]])
4 np.newaxis的作用

     np.newaxis的功能为插入新维度:
     改变维度的作用往往是将一维的数据转变成一个矩阵,与后面的权重矩阵进行相乘, 否则单单的数据是不能进行矩阵相乘的。

a=np.array([1,2,3,4,5])
print(a.shape)  # (5,)

aa=a[:,np.newaxis]
print(aa.shape)  # (5, 1)
5 numpy中双冒号 :: 的作用
a = np.array([[1, 2, 3, 1, 3, 5], [4, 5, 6, 2, 4, 3]])
print(a)
print(a[:, 0::2])

[[1 2 3 1 3 5]
 [4 5 6 2 4 3]]
 [[1 3 3]
  [4 6 4]]

b = np.array([[1, 2, 3, 1, 3, 5], [4, 5, 6, 2, 4, 3]])
print(b)
print(b[:, 1::2])

[[1 2 3 1 3 5]
[4 5 6 2 4 3]]
[[2 1 5]
 [5 2 3]]

     a[:, 0::2]表示取a的第0纬度的所有值,第一纬度从第0列开始,step = 2, 取第0, 2,4列的值;
     b[:, 1::2]表示取b的第0纬度的所有值,第一纬度从第1列开始,step = 2, 取第1, 3,5列的值;
     [start :: step] 表示从start开始,每隔step取值。

6 np.clip()

     np.clip是一个截取函数,用于截取数组中小于或者大于某值的部分,并使得被截取部分等于固定值。

np.clip(a, a_min, a_max, out=None):
该函数的作用是将数组a中的所有数限定到范围a_min和a_max中。
部分参数解释:
a:输入矩阵;
a_min:被限定的最小值,所有比a_min小的数都会强制变为a_min;
a_max:被限定的最大值,所有比a_max大的数都会强制变为a_max;
out:可以指定输出矩阵的对象,shape与a相同

# 一维矩阵
x= np.arange(12)
print(np.clip(x,3,8))
[3 3 3 3 4 5 6 7 8 8 8 8]
# 多维矩阵
y= np.arange(12).reshape(3,4)
print(np.clip(y,3,8))
[[3 3 3 3]
 [4 5 6 7]
 [8 8 8 8]]
7 numpy中的argsort()排序

     argsort函数返回的是数组值从小到大的索引值:

x = np.array([3, 1, 2])
np.argsort(x) #按升序排列
array([1, 2, 0])
np.argsort(-x) #按降序排列
array([0, 2, 1])
x[np.argsort(x)] #通过索引值排序后的数组
array([1, 2, 3])
x[np.argsort(-x)]
array([3, 2, 1])
8 np.prod()函数

     np.prod()函数用来计算所有元素的乘积,对于有多个维度的数组可以指定轴,如axis=1指定计算每一行的乘积。

np.prod([4., 2.])
8.0
np.prod([[4., 2.],[4., 3.]], axis=1)
array([8., 12.)
9 numpy.random.seed(seed=None)

在使用numpy时,难免会用到随机数生成器。numpy.random.seed(),随机数种子,每次可以生成相同的随机数。
随机数种子对后面的结果一直有影响。

该参数指定了一个随机数生成的起始位置。每个参数对应一个位置。并且在该参数确定后,其后面的随机数的生成顺序也就确定了;
需要注意的是,seed值的有效次数仅为一次,因此,若要保证每次产生的随机数相同,则需要在调用随机数函数之前再次使用相同的seed值。

所以,随机数种子的参数怎么选择?这个参数只是确定一下随机数的起始位置,可随意分配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值