Python之Numpy库的简单介绍(一)

Numpy库是一个优秀的开源科学计算库,下面是一些基础的、对数组进行的操作。

在想要应用Numpy库之前,记得添加如下语句。as的作用就相当于一个赋值操作,np就作为numpy的对象

import numpy as np  # 这样就可以用np调用numpy库的函数,np相当于一个别名
import numpy  # 或者直接使用numpy
  1. array,其功能就是创建数组
vector = np.array([1,2,3,4,5])  # 创建一维数组

matrix = np.array([[1,2],[3,4],[5,6]])  # 创建一个3x2的数组,二维数组

cube = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])  # 创建一个2x2x3的三维数组

对于cube这个三维数组,理解起来可以将其比作一个长方体(矩体),将这个长方体分成两层,三行,两列。由于三维数组在不同的研究方向有不同的意思,有些我自己也不太懂。
array还有一些元素,可以对创建的数组进行设置:

a = np.array([1,2,3,4,5,6], dtype='int32' ,order='C')
# dtype的默认值是能够让数组存在于这个序列中的最小类型,比如说一个由整型和浮点型的数组,dtype值为float32/float64,order常用的可选项为C和F,C是行优先,F是列优先
a.ndim  # 可以得到a数组的维度
a.T  # 得到a的转置
a.itemsize  # 得到每个元素的类型大小(字节)
a.nbytes  # 得到整个数组的大小(字节)
a.shape  # 得到a数组的形状,元组表示
a.size  # 得到a数组的元素个数
a.reshape(2,3)  # 得到一个2x3的数组,转换数组的形状
a.min()  # 求最小值
a.max()  # 求最大值
  1. arange,其功能是创建一个给定范围的数组
np.arange(12)  # 创建一个大小为12的数组,并且元素值从0-11

np.arange(3, 9, 1, dtype='int32')  # 创建一个从3开始到9(不包括9),跨度为1的数组,其打印出来的结果就是[3,4,5,6,7,8]
  1. ndarray,其功能是创建多维数组
a=np.ndarray(shape=(3,4),dtype=int,buffer=np.arange(15).reshape(3,5))
# 第一个shape是你想要创建数组的样式,值为一个元组,buffer是你可以指定的一个数组,但是必须要比创建的样式大,buffer的作用是你可以创建一个根据已有值的新的数组,不设置buffer,则赋随机值
np.ndarray((2,),buffer=np.array([1,2,3]),offset=np.int_().itemsize,dtype=int)
# offset表示偏移量,np.int_().itemsize,itemsize的意思就是计算字节大小,np.int_()表示的是int32这一类型,int32类型占4个字节,那他们结合起来的意思就是,offset=4byte,跳过第一个元素。
  1. zeros,创建0元素数组(ones)
np.zeros(shape=(3,4,5))  # 元素值均为0

np.ones(shape=(3,4,5))  # 元素值均为1
  1. hstack、vstack、hsplit、vsplit、tile、dot、sum的使用,实际效果可以用本地IDE调试
np.hstack(array1,array2)  # 水平拼接
np.vstack(array1,array2)  # 垂直拼接
np.hsplit(array1, 2)  # 将array1水平分割成两个单独的数组
np.vsplit(array1, 2)  # 将array1垂直分割
np.tile(array, (2, 2))  # 行数增加2倍,列数增加2倍
np.dot(array1,array2)  # 矩阵乘法

matrix = np.array([[1,3,4],[2,24,5],[4,6,7]])
matrix.sum(axis = 1)  # axis=1时把数组中的元素按列相加,axis=0时把数组按行相加
  1. concatenate的使用
a = np.array([[1,2,3],[4,5,6]])
b = np.array([[4,5,6],[7,8,9]])
np.concatenate((a,b),axis=0)  # axis=0时,垂直合并 axis=1时,水平合并

今天先写到这里吧,适用于像我这样的新手,是一些很简单的操作,最主要是了解原理!