【NumPy 数组索引、裁切,数据类型】
创始人
2024-03-24 08:43:20

在这里插入图片描述

🤵‍♂️ 个人主页@老虎也淘气 个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注

python之Numpy学习

  • NumPy 数组索引
    • 访问数组元素
    • 访问 3-D 数组
    • 负索引
  • NumPy 数组裁切
    • 裁切数组
    • 负裁切
    • STEP
    • 裁切 2-D 数组
  • NumPy 数据类型
    • Python 中的数据类型
    • NumPy 中的数据类型
    • 检查数组的数据类型
    • 用已定义的数据类型创建数组
    • 假如值无法转换会怎样?
    • 转换已有数组的数据类型

NumPy 数组索引

访问数组元素

数组索引等同于访问数组元素。

您可以通过引用其索引号来访问数组元素。

NumPy 数组中的索引以 0 开头,这意味着第一个元素的索引为 0,第二个元素的索引为 1,以此类推。

实例
从以下数组中获取第一个元素:

import numpy as nparr = np.array([1, 2, 3, 4])print(arr[0])

实例
从以下数组中获取第二个元素:

import numpy as nparr = np.array([1, 2, 3, 4])print(arr[1])

实例
访问第二维中的第五个元素:

import numpy as nparr = np.array([[1,2,3,4,5], [6,7,8,9,10]])print('5th element on 2nd dim: ', arr[1, 4])

访问 3-D 数组

要访问 3-D 数组中的元素,我们可以使用逗号分隔的整数来表示元素的维数和索引。

实例
访问第一个数组的第二个数组的第三个元素:

import numpy as nparr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])print(arr[0, 1, 2])

例子解释
arr[0, 1, 2] 打印值 6。

工作原理:
第一个数字代表第一个维度,其中包含两个数组:

[[1, 2, 3], [4, 5, 6]]

然后:

[[7, 8, 9], [10, 11, 12]]

由于我们选择了 0,所以剩下第一个数组:

[[1, 2, 3], [4, 5, 6]]

第二个数字代表第二维,它也包含两个数组:

[1, 2, 3]

然后:

[4, 5, 6]

因为我们选择了 1,所以剩下第二个数组:

[4, 5, 6]

第三个数字代表第三维,其中包含三个值:

4
5
6
由于我们选择了 2,因此最终得到第三个值:

6

负索引

使用负索引从尾开始访问数组。

实例
打印第二个维中的的最后一个元素:

import numpy as nparr = np.array([[1,2,3,4,5], [6,7,8,9,10]])print('Last element from 2nd dim: ', arr[1, -1])

NumPy 数组裁切

裁切数组

python 中裁切的意思是将元素从一个给定的索引带到另一个给定的索引。

我们像这样传递切片而不是索引:[start:end]。

我们还可以定义步长,如下所示:[start:end:step]。

如果我们不传递 start,则将其视为 0。

如果我们不传递 end,则视为该维度内数组的长度。

如果我们不传递 step,则视为 1。

实例
从下面的数组中裁切索引 1 到索引 5 的元素:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[1:5])

注释:结果包括了开始索引,但不包括结束索引。

实例
裁切数组中索引 4 到结尾的元素:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[4:])

实例
裁切从开头到索引 4(不包括)的元素:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[:4])

负裁切

使用减号运算符从末尾开始引用索引:

实例
从末尾开始的索引 3 到末尾开始的索引 1,对数组进行裁切:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[-3:-1])

STEP

请使用 step 值确定裁切的步长:

实例
从索引 1 到索引 5,返回相隔的元素:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[1:5:2])

实例
返回数组中相隔的元素:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[::2])

裁切 2-D 数组

实例
从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片:

import numpy as nparr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])print(arr[1, 1:4])

注释:请记得第二个元素的索引为 1。

实例
从两个元素中返回索引 2:

import numpy as nparr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])print(arr[0:2, 2])

实例
从两个元素裁切索引 1 到索引 4(不包括),这将返回一个 2-D 数组:

import numpy as nparr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])print(arr[0:2, 1:4])

NumPy 数据类型

Python 中的数据类型

默认情况下,Python 拥有以下数据类型:

strings - 用于表示文本数据,文本用引号引起来。例如 “ABCD”。
integer - 用于表示整数。例如 -1, -2, -3。
float - 用于表示实数。例如 1.2, 42.42。
boolean - 用于表示 True 或 False。
complex - 用于表示复平面中的数字。例如 1.0 + 2.0j,1.5 + 2.5j。

NumPy 中的数据类型

NumPy 有一些额外的数据类型,并通过一个字符引用数据类型,例如 i 代表整数,u 代表无符号整数等。

以下是 NumPy 中所有数据类型的列表以及用于表示它们的字符。

i - 整数
b - 布尔
u - 无符号整数
f - 浮点
c - 复合浮点数
m - timedelta
M - datetime
O - 对象
S - 字符串
U - unicode 字符串
V - 固定的其他类型的内存块 ( void )

检查数组的数据类型

NumPy 数组对象有一个名为 dtype 的属性,该属性返回数组的数据类型:

实例
获取数组对象的数据类型:

import numpy as nparr = np.array([1, 2, 3, 4])print(arr.dtype)

实例
获取包含字符串的数组的数据类型:

import numpy as nparr = np.array(['apple', 'banana', 'cherry'])print(arr.dtype)

用已定义的数据类型创建数组

我们使用 array() 函数来创建数组,该函数可以使用可选参数:dtype,它允许我们定义数组元素的预期数据类型:

实例
用数据类型字符串创建数组:

import numpy as nparr = np.array([1, 2, 3, 4], dtype='S')print(arr)
print(arr.dtype)

对于 i、u、f、S 和 U,我们也可以定义大小。

实例
创建数据类型为 4 字节整数的数组:

import numpy as nparr = np.array([1, 2, 3, 4], dtype='i4')print(arr)
print(arr.dtype)

假如值无法转换会怎样?

如果给出了不能强制转换元素的类型,则 NumPy 将引发 ValueError。

ValueError:在 Python 中,如果传递给函数的参数的类型是非预期或错误的,则会引发 ValueError。

实例
无法将非整数字符串(比如 ‘a’)转换为整数(将引发错误):

import numpy as nparr = np.array(['a', '2', '3'], dtype='i')

转换已有数组的数据类型

更改现有数组的数据类型的最佳方法,是使用 astype() 方法复制该数组。

astype() 函数创建数组的副本,并允许您将数据类型指定为参数。

数据类型可以使用字符串指定,例如 ‘f’ 表示浮点数,‘i’ 表示整数等。或者您也可以直接使用数据类型,例如 float 表示浮点数,int 表示整数。

实例
通过使用 ‘i’ 作为参数值,将数据类型从浮点数更改为整数:

import numpy as nparr = np.array([1.1, 2.1, 3.1])newarr = arr.astype('i')print(newarr)
print(newarr.dtype)

实例
通过使用 int 作为参数值,将数据类型从浮点数更改为整数:

import numpy as nparr = np.array([1.1, 2.1, 3.1])newarr = arr.astype(int)print(newarr)
print(newarr.dtype)

实例
将数据类型从整数更改为布尔值:

import numpy as nparr = np.array([1, 0, 3])newarr = arr.astype(bool)print(newarr)
print(newarr.dtype)

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...