栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python--ndarray 常用属性详解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python--ndarray 常用属性详解

文章目录
    • 1. 描述维度的属性--shape
      • 1.1 改变原始数组的维度
      • 1.2 视图变维
      • 1.3 复制变维
    • 2. 数组的索引操作--index
      • 2.1 一维数组的索引切片
      • 2.2 多维数组的切片
        • 2.2.1 二维数组的切片
        • 2.2.2 三维数组的切片
    • 3. ndarray 掩码
      • 3.1 布尔掩码
      • 3.2 索引掩码
    • 4. ndarray 的属性


1. 描述维度的属性–shape 1.1 改变原始数组的维度

改变原始数组的维度是直接对原数组进行修改。

import numpy as np

arr = np.arange(1, 13)
print(arr)
print('-'*20)

# 将数组改为二维数组, 四行三列
arr.shape = (4, 3)
print(arr)
print('-'*20)

# 将数组改为二维数组, 三行四列
arr.resize(3, 4)
print(arr)
print('-'*20)

# 将数组改为三维数组, 两页 每页两行三列

arr.resize(2, 2, 3)
print(arr)
print('-'*20)

# 将数组改为一维数组
arr.resize(arr.size)
print(arr)

1.2 视图变维

视图变维不会对原始数组进行修改,会返回一个新的 ndarray 数组,且新的 ndarray 数组与原始的 ndarray 数组共享数据源,即两个数组使用的数据元素是同一个。

import numpy as np

arr = np.arange(1, 13)
print(arr)
print('-'*20)

# 将数组改为二维数组, 四行三列
arr1 = arr.reshape(4, 3)
print(arr1)
print('-'*20)

# 将数组改为三维数组, 两页 每页两行三列
arr1 = arr.reshape(2, 2, 3)
print(arr1)
print('-'*20)

# 修改原始数组的元素
print(arr)
arr[0] = 100
print(arr)
print(arr1)

import numpy as np

arr = np.arange(1, 13)
arr.resize(4, 3)
print(arr)
print('-'*20)

# 将数组变成一维数组
# 后面的行拼接在前面行的末尾
arr1 = arr.ravel()
print(arr1)
print('-'*20)

arr[0][0] = 1000
print(arr)
print(arr1)

1.3 复制变维

复制变维不会对原始数组进行修改,会返回一个新的 ndarray 数组,且新的 ndarray 数组与原始的 ndarray 数组的数据源相互独立,即两个数组使用的数据元素是不同的。

复制变维会完全复制出来一份新的数组,数据元素与原数组相同,只是新数组的维度不同。

import numpy as np

arr = np.arange(1, 13)
arr.resize(4, 3)
print(arr)
print('-'*20)

# 复制出来的数组为一维数组
arr1 = arr.flatten()
print(arr1)
print('-'*20)

# 修改原始数组
arr[0][0] = 999
print(arr)
print(arr1)

2. 数组的索引操作–index 2.1 一维数组的索引切片
import numpy as np

arr = np.arange(1, 13)
print(arr)
print('='*30)

# 列表支持的切片操作 ndarray 都支持
print(arr[:3])
print(arr[3:])
print(arr[3:6])
print(arr[::2])
print(arr[::-1])

2.2 多维数组的切片 2.2.1 二维数组的切片
import numpy as np

arr = np.arange(1, 13)
arr.resize(4, 3)
print(arr)
print('='*30)

# 获取后两列的全部元素
# [行的切片, 列的切片]
print(arr[2:, :])
print('='*30)

# 获取前两行的 1 3 列元素
print(arr[:2, ::2])
print('='*30)

# 获取中间两行的前两列元素,
print(arr[1:3, 0:2])

2.2.2 三维数组的切片
import numpy as np

arr = np.arange(1, 13)
arr.resize(2, 2, 3)
print(arr)
print('='*30)

# [页的切片, 行的切片, 列的切片]
# 第二页第一行全部元素
print(arr[1:2, 0:1, :])
print('='*30)

# 每页第一行的 1 3 列元素
print(arr[:, 0:1, ::2])
print('='*30)

# 第二页每行的前两列元素,
print(arr[1:, :, :2])

3. ndarray 掩码

掩码是 numpy 提供的一种高效的过滤数组元素,获取原始数组子集的一种数组处理方法。

3.1 布尔掩码

一个与数据数组同维度的由布尔值组成的布尔数组,从原数组中选出在对应的布尔数组为 True 的元素。

import numpy as np

arr = np.arange(1, 5)
print(arr)
print('='*30)

mask = [True, False, True, False]
print(arr[mask])

import numpy as np

arr = np.arange(1, 101)
print(arr)
print('=' * 30)

# 从数组中选出奇数元素
# arr 中每个元素先与 2 进行运算,奇数对应的位置为 True,生成一个布尔数组
# 从原数组中选出对应位置为 True 的元素
print(arr[arr % 2 != 0])

3.2 索引掩码

有一个索引数组,索引数组中存放的为原数组各个元素对应的索引值,根据索引数组中的索引值取出对应的元素。

可以用于数组元素的排序

import numpy as np

arr = np.array(['a', 'b', 'c', 'd', 'e', 'f'])
print(arr)
print('='*20)
index = np.arange(0,6,2)
print(index)
print(arr[index])
print('='*20)
index = [4,5,2,1,0,3]
print(index)
print(arr[index])

4. ndarray 的属性
属性说明
shape各个维度的元素数量
dtype元素类型
size元素数量
ndim维数
itemsize元素字节数
nbytes总字节数
real复数数组的实部数组
imag复数数组的虚部数组
T数组对象的转置视图
flat扁平迭代器
import numpy as np

arr = np.array([
    [1+1j, 2+4j, 3+7j],
    [4+2j, 5+5j, 6+8j],
    [7+3j, 8+6j, 9+9j]
])
print(arr)
print('='*20)

print(arr.shape)
print(arr.dtype)
print(arr.size)
print(arr.ndim)
print(arr.itemsize)
print(arr.nbytes)
print(arr.real)
print(arr.imag)
print(arr.T)
a = [x for x in arr.flat]
print(a)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号