【Python笔记:Numpy常用函数查询手册】

Numpy学习手册

  • Numpy入门
    • 1. 创建ndarray数组
      • 1.1 创建一维ndarray数组
      • 1.2 创建多维ndarray数组
      • 1.3 创建有序ndarray数组
    • 2. ndarray 对象属性
    • 3. Numpy内置函数
    • 4. ndarray 对象方法
  • 数据重塑合并
    • 1.数组重塑
    • 2.数组合并
    • 3. 数组拆分
    • 4. 数组转置和轴变换
  • 随机数
    • 随机整数矩阵

【Python笔记:Numpy常用函数查询手册】_第1张图片

Numpy入门

Numpy是数据分析的基础性第三方库,对于python的学习来说是必备的。Pandas是在Numpy的基础上,对数据再进行封装。

1. 创建ndarray数组

1.1 创建一维ndarray数组

函数:

  1. np.array(data)
  2. np.arange(number).reshape(m, n, p)

属性:arr是一个ndarray数组

  1. arr.shape:返回元组
  2. arr.dtype:返回数值类型
  3. arr.ndim:返回数组有几维
  4. arr.size:返回数组中有几个数值
  5. arr.itemsize:返回每个数组元素的长度(以字节为单位)

对于python所支持的不同基础类型数据data:列表元组,都可以用转化成Numpy形式的ndarray数据结构。

data1 = [5, 7, 9, 20]    #列表
arr1 = np.array(data1)
data2 = (5, 7, 9, 20)     #元组
arr2 = np.array(data2)
print(arr1)
print(arr2)

#====结果====
array([ 5,  7,  9, 20])
array([ 5,  7,  9, 20])

1.2 创建多维ndarray数组

  1. 数组中的数据必须是规整的,即:在输入时,每行数据的个数必须相同。
  2. 可以使用嵌套列表的形式,再进行转换。
  3. 当数组中的数据类型不一致的时候,会统一数据类型。
data3 = [[1, 2, 3, 4],[5, 6, 7, 8]]   #多维数组
arr3 = np.array(data3)
print(arr3)
print(type(arr3))

#====结果====
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
numpy.adarray

1.3 创建有序ndarray数组

  1. reshape(): 第0维中有两个元素,第1维中有三个元素,第2维中有四个元素
  2. np.arange(n):形成一个0~23的有序序列
  3. 需要学会对某个数据的查询
data4 = np.arange(24).reshape(2,3,4)
print(data4)

#====结果====
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

2. ndarray 对象属性

  1. arr.shape:返回一个(行数,列数)的元组
  2. arr.dtype: 返回数组中的数据类型
  3. arr.ndim: 返回数组中的维度
  4. arr.size: 返回数组中的总的元素个数
  5. arr.itemsize: 返回每个数组元素的长度(以字节为单位
print(arr3.shape)
print(arr3.dtype)

#====结果====
(23)
dtype('int32')

3. Numpy内置函数

  1. np.zeros((m,n,…)): 创建指定维度的数组,值都为0
  2. np.ones((m,n,…)):创建指定维度的数组,值都为1
  3. np.empty((m,n,…)):创建指定维度的数组,值为非常小的值
  4. np.ones_like(arr): 创建以arr为参考,值都是1的数组
  5. np.zeros_like(arr): 创建以arr为参考,值都是0的数组
  6. np.empty_like(arr): 创建以arr为参考,值都是非常小值的数组
  7. np.arange(m,n,#k,#dtype=‘…’): 生成一个值在m~n-1,步长k的数组(有序)
  8. arr.astype(np.float64):在不改变原数组的情况下,创建新数据类型的数组.
np.zeros(8)
np.zeros((3,4))
np.ones(4)
np.empty((2, 2, 2))  #非常小的值

#====结果====
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
array([ 1.,  1.,  1.,  1.])
array([[[0.00000000e+000, 0.00000000e+000],
        [0.00000000e+000, 0.00000000e+000]],

       [[0.00000000e+000, 4.07110092e-321],
        [9.02193261e+217, 6.19941833e-071]]])
np.arange(10)
np.arange(5,10)

#====结果====
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([5, 6, 7, 8, 9])

4. ndarray 对象方法

  1. arr.reshape((m,n=-1)):reshape()不改变原数据维度
  2. arr.ravel():高维数组展平,不改变原数据维度
  3. arr.flatten():高维数组展平,不改变原数据维度

数据重塑合并

1.数组重塑

  1. arr.reshape((m,n,…)):reshape方法会对原有的数组进行重塑,但不会改变原数据维度
  2. arr.ravel()
  3. arr.flatten()
arr = np.arange(9)
arr.reshape((3,3)) 
print(arr)

#====结果====
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
arr = np.array([[3, 4, 5],[1, 2, 3]])
print(arr.shape)
print(arr.reshape((3,2)))   #reshape()不改变原数据维度
arr
#====结果====
(2, 3)
[[3 4]
 [5 1]
 [2 3]]
array([[3, 4, 5],
       [1, 2, 3]])
arr1 = np.arange(12)
arr2 = np.arange(10).reshape((5,2))
print(arr1.reshape((3,-1)))
print(arr2)
#====结果====
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

2.数组合并

  1. np.concatenate([arr1, arr2],axis=0) :
  2. np.vstack((arr1,arr2)):
  3. np.hstack((arr1, arr2)):
arr1 = np.arange(12).reshape(3,4)
arr2 = np.arange(12,24).reshape(3,4)

np.concatenate([arr1, arr2],axis=0) 
#====结果====
array([[ 0,  1,  2,  3],
      [ 4,  5,  6,  7],
      [ 8,  9, 10, 11],
      [12, 13, 14, 15],
      [16, 17, 18, 19],
      [20, 21, 22, 23]])

np.concatenate([arr1, arr2],axis=1)
#====结果====
array([[ 0,  1,  2,  3, 12, 13, 14, 15],
      [ 4,  5,  6,  7, 16, 17, 18, 19],
      [ 8,  9, 10, 11, 20, 21, 22, 23]])

np.vstack((arr1,arr2))
#====结果====
array([[ 0,  1,  2,  3],
      [ 4,  5,  6,  7],
      [ 8,  9, 10, 11],
      [12, 13, 14, 15],
      [16, 17, 18, 19],
      [20, 21, 22, 23]])

np.hstack((arr1, arr2))
#====结果====
array([[ 0,  1,  2,  3, 12, 13, 14, 15],
      [ 4,  5,  6,  7, 16, 17, 18, 19],
      [ 8,  9, 10, 11, 20, 21, 22, 23]])
      

3. 数组拆分

  1. np.split(ary, indices_or_sections, axis=0):返回列表形式
arr = np.arange(12).reshape((6,2))
#arr
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11]])

np.split(arr,[2, 4])  
#====结果====
[array([[0, 1],
        [2, 3]]),
 array([[4, 5],
        [6, 7]]),
 array([[ 8,  9],
        [10, 11]])]

np.split(arr,[2,5])
#====结果====
[array([[0, 1],
        [2, 3]]),
 array([[4, 5],
        [6, 7],
        [8, 9]]),
 array([[10, 11]])]

np.split(arr,[4,])
[array([[0, 1],
        [2, 3],
        [4, 5],
        [6, 7]]),
 array([[ 8,  9],
        [10, 11]])]
#====结果====

4. 数组转置和轴变换

  1. arr.transpose((1,0)):参数是指新的轴编号是原来哪个轴编号
  2. arr.T:转置矩阵
  3. arr.swapaxes(1, 2):接收一对轴编号,互换
#arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

arr.transpose((1,0))
#====结果====
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])
arr = np.arange(24).reshape((2,3,4)) 
#arr
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
arr.transpose(2,0,1)  #原数组是2*3*4,转换之后是4*2*3
array([[[ 0,  4,  8],
        [12, 16, 20]],

       [[ 1,  5,  9],
        [13, 17, 21]],

       [[ 2,  6, 10],
        [14, 18, 22]],

       [[ 3,  7, 11],
        [15, 19, 23]]])

随机数

随机整数矩阵

你可能感兴趣的:(Numpy,python,numpy,数据分析)