【NumPy 数组索引、裁切,数据类型】

简介: 【NumPy 数组索引、裁切,数据类型】

NumPy 数组索引

访问数组元素

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

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

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

实例

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

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

实例

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

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

实例

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

import numpy as np
arr = 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 np
arr = 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 np
arr = 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 np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5])

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

实例

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

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

实例

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

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

负裁切

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

实例

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

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

STEP

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

实例

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

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

实例

返回数组中相隔的元素:

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

裁切 2-D 数组

实例

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

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

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

实例

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

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

实例

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

import numpy as np
arr = 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 np
arr = np.array([1, 2, 3, 4])
print(arr.dtype)

实例

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

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

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

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

实例

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

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

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

实例

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

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

假如值无法转换会怎样?

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

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

实例

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

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

转换已有数组的数据类型

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

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

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

实例

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

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

实例

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

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

实例

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

import numpy as np
arr = np.array([1, 0, 3])
newarr = arr.astype(bool)
print(newarr)
print(newarr.dtype)
相关文章
|
2月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
87 10
|
2月前
|
Python
Numpy学习笔记(四):如何将数组升维、降维和去重
本文介绍了如何使用NumPy库对数组进行升维、降维和去重操作。
47 1
|
2月前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
35 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
2月前
|
Python
使用 NumPy 进行数组操作的示例
使用 NumPy 进行数组操作的示例
37 2
|
2月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
106 4
|
2月前
|
机器学习/深度学习 并行计算 调度
CuPy:将 NumPy 数组调度到 GPU 上运行
CuPy:将 NumPy 数组调度到 GPU 上运行
96 1
|
3月前
|
API Python
Numpy 数组的一些集合操作
Numpy 数组的一些集合操作
39 0
|
3月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
91 0
|
4月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
63 0
|
1月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
37 3