python之Numpy(二)

目录

一,使用empty创建矩阵

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

三,使用eye创建单位阵

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

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

六,一维ndarray数组的切片

七,二维ndarray数组的切片

7.1 图解二维数组切片

7.2 二维数组切片的语法


一,使用empty创建矩阵

import numpy as np

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

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

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

        格式:full(shape,fill_value)。

import numpy as np

x = np.full(shape=(3, 3), fill_value=8, dtype=int)
print(x)
# [[8 8 8]
#  [8 8 8]
#  [8 8 8]]

三,使用eye创建单位阵

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

import numpy as np

n1 = np.eye(3, dtype=int)
n2 = np.identity(3, dtype=int)
print(n1, '\n\n\n', n2)
# [[1 0 0]
#  [0 1 0]
#  [0 0 1]] 

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

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

        参数解释如下:

import numpy as np

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

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

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

        参数解读如下:

import numpy as np

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

六,一维ndarray数组的切片

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

import numpy as np

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

        另外切片也支持负索引。

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

七,二维ndarray数组的切片

7.1 图解二维数组切片

7.2 二维数组切片的语法

        使用[][]来访问。

import numpy as np

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

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

import numpy as np

a = np.arange(0, 20).reshape(4, 5)
print('所有行的第二列')
print(a[:, 1])
print('获取第三行第二列')
print(a[2, 1])
print('奇数行的第一列')
print(a[::2, 0])
print('同时获取第三行第二列,第四行第一列')
print(a[(2, 3), (1, 0)])
# 所有行的第二列
# [ 1  6 11 16]
# 获取第三行第二列
# 11
# 奇数行的第一列
# [ 0 10]
# 同时获取第三行第二列,第四行第一列
# [11 15]

        负索引的使用。

import numpy as np

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

        数组的复制。

import numpy as np

a = np.arange(1, 13).reshape(3, 4)
sub_array = a[:2, :2]
sub_array[0][0] = 1000
print(sub_array)
sub_array = np.copy(a[:2, :2]) # np.copy()
sub_array[0][0] = 2000
print(sub_array)
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值