numpy

import sys

import numpy as np
import pandas as pd


def main():
    np.set_printoptions(threshold=sys.maxsize)  # 数组太大无法打印,会跳过中心部分打印角点,禁用此行为打印全部

    # 创建
    print(np.array([1, 2, 3]))  # 创建数组
    a = np.array([[1, 2], [3, 4]])
    print(a.shape)  # (2, 2) 数组维度,每个轴
    print(a.dtype)  # int32 元素类型
    print(a.size)  # 4 元素总数
    print(a.itemsize)  # 4 元素大小
    print(a.ndim)  # 2 维度
    print(np.arange(6))  # [0 1 2 3 4 5]
    print(np.arange(10, 30, 5))  # [10 15 20 25] 创建数组,间隔相同分割
    print(np.arange(30).reshape(5, 6))  # 分割为二维数组,长度为5,内部每个数组长度为6
    print(np.random.random((2, 3)))  # [[0.14609899 0.51189478 0.75666616],[0.46556059 0.84267786 0.68384807]]

    # 运算
    # 按元素进行运算
    a = np.array([2, 3, 4])
    b = np.array([2, 2, 3])
    print(a - b)  # [1 1 1]
    print(a ** 2)  # [ 4  9 16] 求元素平方
    print(a < 1)  # [False False False]
    print(a * b)  # [ 2  6 12]
    print(a @ b)  # 每个元素相乘,然后相加
    print(a.dot(b))  # 每个元素相乘,然后相加
    x = np.random.random((2, 3))
    print(x)  # [[0.0876145  0.91328615 0.18603795],[0.39327751 0.11606926 0.58073591]]
    print(x.sum(), x.min())  # 2.277021284092989 0.08761450096715961 多维数组作为一维数组处理

    # 指定轴应用操作 axis参数
    q = np.arange(12).reshape(3, 4)
    # array([[0, 1, 2, 3],
    #        [4, 5, 6, 7],
    #        [8, 9, 10, 11]])
    print(q.sum(axis=0))  # array([12, 15, 18, 21])  对每一列求和
    print(q.min(axis=1))  # array([0, 4, 8]) 列最小
    print(q.min(axis=0))  # [0 1 2 3]  行最小

    print(q.cumsum(axis=1))  # 0,列叠加,1,行叠加
    # array([[0, 1, 3, 6],
    #        [4, 9, 15, 22],
    #        [8, 17, 27, 38]])

    # 通用函数
    w = np.array([1, 2, 3])
    e = np.array([4, 5, 6])
    print(np.add(w, e))  # 求和
    print(np.all(w))
    print(np.any(e))
    print(np.isnan(e))

    # 索引、切片、迭代
    r = np.arange(10)  # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    print(r[2:5])
    print(r[::-1])  # 倒序
    t = np.arange(15).reshape(3, 5)
    for el in t.flat:  # flat 属性 对数组的每个元素执行操作
        print(el)

    # 改变数组形状
    y = np.floor(10 * np.random.random((4, 3)))
    print(y.ravel())  # array([6., 8., 8., 2., 2., 6., 2., 1., 4., 0., 7., 5.])
    print(y.reshape(6, 2))
    print(y.T)  # shape反转 4,3 -》 3,4
    y.resize(6, 2)  # resize修改数组本身,reshape是产生新的
    print(y.reshape(2, -1))  # 自动计算-1的值

    # 数组堆叠
    a = np.floor(10 * np.random.random((2, 2)))
    b = np.floor(10 * np.random.random((2, 2)))
    print(np.vstack(a, b))  # 纵向
    print(np.hstack(a, b))  # 横向
    # column_stack

    # 数组拆分
    a = np.floor(10 * np.random.random((2, 12)))
    np.hsplit(a, 3)

    # 复制
    c=a.view()
    c=a.copy()

if __name__ == '__main__':
    main()

  

posted on 2022-07-06 15:35  HHMLXL  阅读(16)  评论(0)    收藏  举报

导航