• python之Numpy(二)


    目录

    一,使用empty创建矩阵

    二,使用full创建全部元素都一样的矩阵

    三,使用eye创建单位阵

    四,使用linspaec创建等差一维数组

    五,使用logspace创建等比一维数组

    六,一维ndarray数组的切片

    七,二维ndarray数组的切片

    7.1 图解二维数组切片

    7.2 二维数组切片的语法


    一,使用empty创建矩阵

    1. import numpy as np
    2. x = np.empty(shape=(3, ), dtype=int, order='C')
    3. x = np.empty(shape=(3, 2), dtype=int, order='C')
    4. y = np.empty_like(x)
    5. # 参数order表示按列排,Colum

            empty方法会在内存中开辟一块储存矩阵的空间,但是并不会对其赋值,empty生成的矩阵中每一个元素的值都是其分配时所占内存id的原始值。

    二,使用full创建全部元素都一样的矩阵

            格式:full(shape,fill_value)。

    1. import numpy as np
    2. x = np.full(shape=(3, 3), fill_value=8, dtype=int)
    3. print(x)
    4. # [[8 8 8]
    5. # [8 8 8]
    6. # [8 8 8]]

    三,使用eye创建单位阵

            单位阵必定是一个方阵,且主对角元素均为1。另外identity方法也可以创建单位矩阵。

    1. import numpy as np
    2. n1 = np.eye(3, dtype=int)
    3. n2 = np.identity(3, dtype=int)
    4. print(n1, '\n\n\n', n2)
    5. # [[1 0 0]
    6. # [0 1 0]
    7. # [0 0 1]]

    四,使用linspaec创建等差一维数组

            格式:np.linspace(start, stop, num, endpoint=True, retstep=False, dtype=None)。

            参数解释如下:

    1. import numpy as np
    2. x = np.linspace(1, 10, 10)
    3. print(x)
    4. # endpoint=True 间隔 end-start/(num-1)
    5. x = np.linspace(1, 6, 5, endpoint=True)
    6. print(x)
    7. # endpoint=False 间隔 end-start/num
    8. x = np.linspace(1, 6, num=5, endpoint=False)
    9. print(x)
    10. # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
    11. # [1. 2.25 3.5 4.75 6. ]
    12. # [1. 2. 3. 4. 5.]

    五,使用logspace创建等比一维数组

            格式:np.logspace(start, stop, num=50,endpoint=True, base=10.0, dtype=None)。

            参数解读如下:

    1. import numpy as np
    2. x = np.logspace(start=0, stop=9, num=10, base=2) # 序列的起始值为:base ** start
    3. # [ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]
    4. print(x)
    5. x = np.logspace(0, 3, num=4)
    6. print(x)

    六,一维ndarray数组的切片

            与python自带的list列表切片一模一样。ndarray数组可以基于0 - n 的下标进行索引,并设置 start, stop 及 step 参数,从原数组中切割出一个新数组。

    1. import numpy as np
    2. x = np.arange(10)
    3. print(f'x is{x}')
    4. print(x[2],
    5. x[2:7:2],
    6. x[2:], sep='\n')
    7. # x is[0 1 2 3 4 5 6 7 8 9]
    8. # 2
    9. # [2 4 6]
    10. # [2 3 4 5 6 7 8 9]

            另外切片也支持负索引。

    1. import numpy as np
    2. x = np.arange(10)
    3. x[-2]
    4. x[-2:]

    七,二维ndarray数组的切片

    7.1 图解二维数组切片

    7.2 二维数组切片的语法

            使用[][]来访问。

    1. import numpy as np
    2. a = np.arange(0, 12).reshape(3, 4)
    3. print('获取第二行')
    4. print(a[1])
    5. print('获取第三行第二列')
    6. print(a[2][1])

            使用坐标获取数组[x,y]。

    1. import numpy as np
    2. a = np.arange(0, 20).reshape(4, 5)
    3. print('所有行的第二列')
    4. print(a[:, 1])
    5. print('获取第三行第二列')
    6. print(a[2, 1])
    7. print('奇数行的第一列')
    8. print(a[::2, 0])
    9. print('同时获取第三行第二列,第四行第一列')
    10. print(a[(2, 3), (1, 0)])
    11. # 所有行的第二列
    12. # [ 1 6 11 16]
    13. # 获取第三行第二列
    14. # 11
    15. # 奇数行的第一列
    16. # [ 0 10]
    17. # 同时获取第三行第二列,第四行第一列
    18. # [11 15]

            负索引的使用。

    1. import numpy as np
    2. a = np.arange(0, 20).reshape(4, 5)
    3. print('获取最后一行')
    4. print(a[-1])
    5. print('行与行倒序')
    6. print(a[::-1])
    7. print('行列都倒序')
    8. print(a[::-1, ::-1])
    9. # 获取最后一行
    10. # [15 16 17 18 19]
    11. # 行与行倒序
    12. # [[15 16 17 18 19]
    13. # [10 11 12 13 14]
    14. # [ 5 6 7 8 9]
    15. # [ 0 1 2 3 4]]
    16. # 行列都倒序
    17. # [[19 18 17 16 15]
    18. # [14 13 12 11 10]
    19. # [ 9 8 7 6 5]
    20. # [ 4 3 2 1 0]]

            数组的复制。

    1. import numpy as np
    2. a = np.arange(1, 13).reshape(3, 4)
    3. sub_array = a[:2, :2]
    4. sub_array[0][0] = 1000
    5. print(sub_array)
    6. sub_array = np.copy(a[:2, :2]) # np.copy()
    7. sub_array[0][0] = 2000
    8. print(sub_array)
  • 相关阅读:
    解决appium或selenium使用时driver.find_element_by_xpath中间有删除线问题
    mindspore将parameter转为tensor时报错
    别再用 System.currentTimeMillis 统计耗时了,太 Low,试试 Spring Boot 源码在用的 StopWatch吧,够优雅!
    多商户商城源码:使用Spring+JPA开发,支持多服务器分布式部署
    风控中策略规则发现的两种模型方法
    NMEA0813协议简介
    Kafka生产者消息发送流程
    [暑假-边做边学版]Vue实战(2)
    共享自行车需求预测学习记录
    Django缓存
  • 原文地址:https://blog.csdn.net/weixin_44992737/article/details/126149029