numpy和pandas的测试

import pandas as pd
import numpy as np
# list转array:np.array(a)
# array 转list:a.tolist()
def testNP():
    #创建一维数组 numpy.arange(start, stop, step, dtype)
    print(np.arange(10))
    #[0 1 2 3 4 5 6 7 8 9]

    print(np.ones(2))#一维
    print(np.ones(2,2))#二维
    print(np.ones(2,2,2))#三维
    print(np.full(2,3,3)) # 创建一个2*3的数组,所有元素都填充3
    #[[3, 3, 3],[3, 3, 3]]
    print(np.eye(3,3)) #创建一个对角线是1的数组
    print(np.zeros(shape=(2,5),dtype=int))#shape=(2,5) ,int类型
    # [[0 0 0 0 0][0 0 0 0 0]]
    print(np.array([1, 2, 3, 4, 5], ndmin=3)) #array设置成为n个维度
    # [[[1 2 3 4 5]]]
    print(np.array([1, 2, 3], dtype=complex)) #输出为复数
    # [1.+0.j 2.+0.j 3.+0.j]
    n1 = np.arange(12)
    print(n1.reshape((3, 4)))  # 改变形状,改成3行4列
    # [[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
    print(np.random.random((3, 3))) #创建一个0-1之间随机数,shape(3,3)
    print(np.linspace(10, 20, 5))  # 将10到20间的数等距取5个
    #[10. , 12.5, 15. , 17.5, 20. ]
    print(np.random.randint(1, 10, 3))  # 从1到10之间随机取3个整数创建数组
    # array([6, 4, 6])
    #np.where()[0] 表示行的索引;
    #np.where()[1] 则表示列的索引;
    print(np.where(np.array([3,4,5,6])>5))
    # (array([3], dtype=int64),)

    # where函数的使用,可以理解为:
    # 1、三个参数np.where(condition, x, y): 满足条件(condition)输出x, 不满足则输出y;
    # 2、一个参数np.where(arr): 输出arr中“真”值的坐标,简单理解为不为0的坐标。
    n2 = np.arange(27).reshape(3, 3, 3)
    print(np.where(n2>5))
    #(array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2],dtype=int64),
    # array([2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2],dtype=int64),
    # array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],dtype=int64))

    #需要竖着看:020,021,022==[[[6,7,8]]]

    print(np.ones(2,2).flatten())#扁平化为一维数组

    back = np.arange(36).reshape((4, 9))#变换数组形状

    dan=np.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, 24, 25, 26],
           [27, 28, 29, 30, 31, 32, 33, 34, 35]])
    # 切片:
    print(dan[1]) # 取第二行数据
    #[9, 10, 11, 12, 13, 14, 15, 16, 17]
    print(dan[:2])  # 取前两行数据
    # [[0, 1, 2, 3, 4, 5, 6, 7, 8],[9, 10, 11, 12, 13, 14, 15, 16, 17]]
    print(dan[::2])  # 每隔一行取一次,步长
    # [[0, 1, 2, 3, 4, 5, 6, 7, 8],[18, 19, 20, 21, 22, 23, 24, 25, 26]]
    print(dan[1:])  # 取第2行后面所有行
    print(dan[[0, -1]])  # 取第一行和最后一行
    # [[0, 1, 2, 3, 4, 5, 6, 7, 8],[27, 28, 29, 30, 31, 32, 33, 34, 35]]
    print(dan[:, 1])  # 取第2列
    # [1, 10, 19, 28]
    print(dan[:, 1:3])  # 取第2列到第3列
    # [[1, 2],[10, 11],[19, 20],[28, 29]]
    print(dan[:, [0, 3]])  # 取第1列和第4列
    # [[0, 3],[9, 12],[18, 21],[27, 30]]
    print(dan[1:3:, 1:3])  # 取第2、3行中的第2、3列
    #[[10, 11],[19, 20]]
    print(dan[[0, 2], [1, 3]])
    #[ 1, 21]
    print(dan[[2, 2, 3, 3], [2, 4, 0, 6]])  # 第3行中第3列、第5列,第4行中第1列、第7列数据
    # [20, 22, 27, 33]
    print(dan[3,3]) #取单个数据
    # 30
# pandas的一些操作
def testPD():
    #创建一个Series(创建一个一维数组)
    #通过列表创建
    s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
    #通过字典创建
    dict_data = {'a': 0., 'b': 1., 'c': 2.}
    s2 = pd.Series(dict_data)
    #一个标量创建
    s3 = pd.Series(5, index=[0, 1, 2, 3])
    #创建一个DataFrame
    #通过字典创建DataFrame
    data = {'A': ['x', 'y', 'z'], 'B': [1000, 2000, 3000], 'C': [10, 20, 30]}
    dfn = pd.DataFrame(data, index=['a', 'b', 'c'])
    print(dfn)

    #通过二维数组创建DataFrame
    dfg = pd.DataFrame(
        data=np.random.randint(10, 100, size=(4, 6)),
        index=['A', 'B', 'C', 'D'],
        columns=['语文', '数学', '英语', '化学', '物理', '生物']
    )
    print(dfg)

    # loc和iloc函数(提取某几列或者行的数据)
    # data.iloc[A:B, C:D]
    #
    # 用法:逗号前面表示的是取哪些行,逗号后面表示取哪些列
    # 例如1:data.iloc[0:2, 1:2]  # 取第0-2行和1-2列交叉的所有的数据
    #
    # 例如2:data.iloc[:, 1:2]  # 取所有行和1-2列交叉的所有的数据
    #
    # 例如3:data.iloc[:, :]  # 取所有行和所有列的所有的数据
    #
    # 例如4:data.iloc[:, [1, 2, 3]]  # 取所有行和第1,2,3列交叉的所有的数据

    # 创建一个Dataframe
    data = pd.DataFrame(np.arange(16).reshape(4, 4), index=list('abcd'), columns=list('ABCD'))
    print(data)

    # 例如1:data.loc[:, 'A']  # 取列名为A的该列的所有数据
    #
    # 例如2:data.iloc['a':'c', 'A']  # 取行号为a、c的列为A的所有数据

    # pd.concat()
    # 函数可以沿着指定的轴将多个dataframe或者series拼接到一起,这一点和另一个常用的pd.merge()
    # 函数不同,pd.merge()解决数据库样式的左右拼接,不能解决上下拼接
    # pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None,
    #           verify_integrity=False)
    # 参数详解:
    # objs: 待合并的所有数据集,一般为列表list, list中的元素为series或dataframe
    # axis: 合并时参考的轴,axis = 0为基于行合并;axis = 1为列合并, 默认为0
    # join: 连接方式为内连接(inner)or外连接(outer)



if __name__=='__main__':
    testNP()
    testPD()

这个主意一点:

dan=np.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, 24, 25, 26],
           [27, 28, 29, 30, 31, 32, 33, 34, 35]])
    # 切片:
    print(dan[1]) # 取第二行数据
    #[9, 10, 11, 12, 13, 14, 15, 16, 17]
    print(dan[:2])  # 取前两行数据
    # [[0, 1, 2, 3, 4, 5, 6, 7, 8],[9, 10, 11, 12, 13, 14, 15, 16, 17]]
    print(dan[::2])  # 每隔一行取一次,步长
    # [[0, 1, 2, 3, 4, 5, 6, 7, 8],[18, 19, 20, 21, 22, 23, 24, 25, 26]]
    print(dan[1:])  # 取第2行后面所有行
    print(dan[[0, -1]])  # 取第一行和最后一行
    # [[0, 1, 2, 3, 4, 5, 6, 7, 8],[27, 28, 29, 30, 31, 32, 33, 34, 35]]
    print(dan[:, 1])  # 取第2列
    # [1, 10, 19, 28]
    print(dan[:, 1:3])  # 取第2列到第3列
    # [[1, 2],[10, 11],[19, 20],[28, 29]]
    print(dan[:, [0, 3]])  # 取第1列和第4列
    # [[0, 3],[9, 12],[18, 21],[27, 30]]
    print(dan[1:3:, 1:3])  # 取第2、3行中的第2、3列
    #[[10, 11],[19, 20]]
    print(dan[[0, 2], [1, 3]])
    #[ 1, 21]
    print(dan[[2, 2, 3, 3], [2, 4, 0, 6]])  # 第3行中第3列、第5列,第4行中第1列、第7列数据
    # [20, 22, 27, 33]
    print(dan[3,3]) #取单个数据
    # 30
#np.arange(start,stop,step,dtype)
    # np.random.rand(d0, d1, …, dn):生成一个[0, 1)之间的随机浮点数或N维浮点数组。(d0, d1, …, dn)表示数组的维度
    #np.random.randint(low,high,size,dtype)
    # np.random.uniform(low,high,size) 生成均匀分布的数据
    # np.random.randn(d0, d1, …, dn) 正态分布的随机样本数
    # np.random.random((100, 50))生成100行50列随机浮点数,范围是[0,1)
    # numpy.random.shuffle(x):对X进行重排序,如果X为多维数组,只沿第一条轴洗牌,输出为None。
    # numpy.random.choice(a, size=None, replace=True, p=None):从序列中获取元素,若a为整数,元素取值为np.range(a)
    # 中随机数;若a为数组,取值为a数组元素中随机元素。
    # numpy.random.standard_normal(size=None):生产一个浮点数或N维浮点数组,取数范围:标准正态分布随机样本
    #np.random.narmal(0, 1, 10000)生成均值是0,标准差是1,10000个数据。正态分布是一种对称的、钟形曲线分布,均值、中位数和众数相等。它具有良好的数学性质,
    # 广泛用于自然现象、社会科学、工程等领域的建模。

你可能感兴趣的:(【人工智能AI】,numpy,pandas,python)