Pyhton Numpy基本操作

1.生成数组的方法

1.1 生成0和1的数组

  • np.ones(shape, dtype)
  • np.ones_like(a, dtype)
  • np.zeros(shape, dtype)
  • np.zeros_like(a, dtype)

举例: ones = np.ones([4,8]) 返回结果:

array([[1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.]])

举例: np.zeros_like(ones) 返回结果:

array([[0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.]])

1.2 从现有数组生成

两种生成方式:

  • np.array(object, dtype)
  • np.asarray(a, dtype)
a = np.array([[1,2,3],[4,5,6]])
# 从现有的数组当中创建
a1 = np.array(a)
# 相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)

运行结果: 表示原始数组该之后,a1不会发生改变,但是a2会发生改变。

1.3 固定范围的数组

1.3.1 等差数组-指定数量

np.linspace (start, stop, num, endpoint) 参数:

  • start:序列的起始值
  • stop:序列的终止值
  • num:要生成的等间隔样例数量,默认为50
  • endpoint:序列中是否包含stop值,默认为ture

举例:

# 生成等间隔的数组
np.linspace(0, 100, 11)

返回结果:

array([  0.,  10.,  20.,  30.,  40.,  50.,  60.,  70.,  80.,  90., 100.])

等差数组--指定步长

np.arange(start,stop, step, dtype) 参数:

  • step:步长,默认值为1 举例:
np.arange(10, 50, 2)

返回结果

array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
       44, 46, 48])

1.3.3 等比数组

np.logspace(start,stop, num) 参数:

  • num:要生成的等比数列数量,默认为50 举例:
# 生成10^x
np.logspace(0, 2, 3)

返回结果:

array([  1.,  10., 100.])

1.4 生成随机数组--np.random模块

1.4.1 正太分布

函数:

  • np.random.randn(d0, d1, …, dn) 从标准正态分布中返回一个或多个样本值
  • np.random.normal(loc=0.0, scale=1.0, size=None) 参数: loc:float 概率分布的均值(整个分布的中心centre) scale:float 概率分布的标准差(整个分布的宽度,越大越矮胖,越小越瘦高) size:int or tuple of ints 输出的shape,默认为None,只输出一个值
  • np.random.standard_normal(size=None) 返回指定形状的标准正态分布的数组。 举例:
# 生成均匀分布的随机数
x1 = np.random.normal(1.75, 1, 100000000)

# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(20, 10), dpi=100)

# 2)绘制直方图
plt.hist(x1, 1000)

# 3)显示图像
plt.show()

结果:

1.4.2 均匀分布

  • np.random.rand(d0, d1, ..., dn) ** 返回[0.0,1.0)内的一组均匀分布的数。 *** np.random.uniform(low=0.0, high=1.0, size=None) 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high. 参数介绍: low: 采样下界,float类型,默认值为0; high: 采样上界,float类型,默认值为1; size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值。 返回值:ndarray类型,其形状和参数size中描述一致。
  • np.random.randint(low, high=None, size=None, dtype='l') 从一个均匀分布中随机采样,生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。 举例:
import matplotlib.pyplot as plt

# 生成均匀分布的随机数
x2 = np.random.uniform(-1, 1, 100000000)

# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(10, 10), dpi=100)

# 2)绘制直方图
plt.hist(x=x2, bins=1000)  # x代表要使用的数据,bins表示要划分区间数

# 3)显示图像
plt.show()

结果展示:

2 数组的索引、切片

索引:对象[:, :] -- 先行后列 二维数组举例:获取第一个股票的前3个交易日的涨跌幅数据

# 二维的数组,两个维度 
stock_change[0, 0:3]

三维数组举例: 重点: 首先表示三维中第几个二维,再选择二维中第几个一维,最后选择一维中哪个数字。

# 三维
a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])
# 返回结果
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[12,  3, 34],
        [ 5,  6,  7]]])
# 索引、切片
>>> a1[0, 0, 1]   # 输出: 2

3 形状修改

*** ndarray.reshape(shape, order) ** 返回一个具有相同数据域,但shape不一样的视图,行、列不进行互换 *** ndarray.resize(new_shape)** 修改数组本身的形状(需要保持元素个数前后相同,行、列不进行互换 *** ndarray.T ** 数组的转置,将数组的行、列进行互换

4 类型修改

  • **ndarray.astype(type) **
  • 返回修改了类型之后的数组 举例: stock_change.astype(np.int32)
  • ndarray.tostring([order])或者ndarray.tobytes([order]) 构造包含数组中原始数据字节的Python字节
  • 注意:jupyter输出太大可能导致崩溃问题
IOPub data rate exceeded.
    The notebook server will temporarily stop sending output
    to the client in order to avoid crashing it.
    To change this limit, set the config variable
    `--NotebookApp.iopub_data_rate_limit`.

5 数组去重

np.unique() 举例:

temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
>>> np.unique(temp)
array([1, 2, 3, 4, 5, 6])

一、需求分析服务器A中的数据库实例被删除,幸好dbf文件还在,遂准备由dbf文件恢复数据到服务器B续命,待恢复的数据库实例名为 orcl1服务器B中的数据库为新安装,已经初始化好 orcl 实 ...