在使用TensorFlow框架进行机器学习时,NumPy这个数学工具比Python自带的要好用多了。在学习过程中对某些API有些迷茫,下面对本人使用过程中用的比较频繁的NumPy API进行例举。
安装NumPy
$ pip install numpy
在OS X环境上可能会出现Permission denied,这样需要在前面加上sudo,这样安装不会影响使用。
- numpy.arange
numpy.arange([start, ]stop, [step, ]dtype=None)
>>> import numpy as np
>>> np.arange(1,10,2)
array([1, 3, 5, 7, 9])
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
- numpy.reshape(a, newshape, order='C')
创建一个多维数组
>>> np.arange(12).reshape((4,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>>
- numpy.random.shuffle和numpy.random.permutation
shuffle意思为洗牌,permutation为排列,这两者都可以对数据打散random排序,不同的是shuffle在原来的数组上进行操作,无返回值,permutation是生成一个新的数组,原数组不会改变。
>>> arr = np.arange(11)
>>> arr
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> np.random.shuffle(arr)
>>> arr
array([10, 3, 2, 1, 8, 4, 0, 7, 5, 9, 6])
>>> arr2 = np.random.permutation(arr)
>>> arr
array([10, 3, 2, 1, 8, 4, 0, 7, 5, 9, 6])
>>> arr2
array([ 6, 5, 4, 3, 1, 7, 8, 2, 9, 0, 10])
- 切片的使用
(1)[:]
[:]表示复制源列表;
index为负值表示从后往前,-1表示最后一个。
>>> arr = np.arange(10)
>>> arr1 = arr[:]
>>> arr1
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr1[-2]
8
(2)arr_name[行操作,列操作]
取行数据[i:j, :]
>>> arr = np.arange(12).reshape((4,3))
>>> arr[1:3,:]
array([[3, 4, 5],
[6, 7, 8]])
>>> arr[np.arange(2),:]
array([[0, 1, 2],
[3, 4, 5]])
>>> arr[:3,:]
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
取列数据[:, i:j]
>>> arr[:,0] # 以行的形式返回
array([0, 3, 6, 9])
>>> arr[:,:1] # 以列的形式返回
array([[0],
[3],
[6],
[9]])
>>> arr[:,np.arange(2)] # 以列的形式返回
array([[ 0, 1],
[ 3, 4],
[ 6, 7],
[ 9, 10]])
网友评论