您的位置:

万能ndarray —— 从生成到使用

一、ndarray数组有哪些属性

NumPy中最重要的数据类型是ndarray,该类型代表N维数组。ndarray对象有以下属性:

  1. ndarray.ndim: 数组的维数(即数组轴的个数),例如2维数组的轴数为2,一维数组的轴数为1。
  2. ndarray.shape: 数组的形状,即各个维度上的大小。例如,一个形状为(3, 4)的数组,代表有3个子数组,每个子数组包含4个元素。
  3. ndarray.size: 数组中的元素数量。
  4. ndarray.dtype: 数组中元素的数据类型。
  5. ndarray.itemsize: 数组中每个元素的字节大小。
  6. ndarray.data: 包含数组实际元素的Python缓冲区,通常只能通过索引访问。

二、如何生成ndarray

NumPy中可以使用多种方法来生成ndarray数组,常见的有以下几种:

  1. 使用array函数: 可以将Python列表、元组等序列转换为ndarray数组。
  2. 使用arange函数: 一种类似于Python中的range函数的功能,可以快速生成等差数列。
  3. 使用linspace函数: 在指定的区间内生成均匀分布的数据。
  4. 使用random函数: 生成随机数的数组。
import numpy as np

# 使用列表生成ndarray
a = np.array([1, 2, 3])
print(a)

# 使用arange生成等差数列
b = np.arange(1, 10, 2)
print(b)

# 使用linspace生成均匀分布数据
c = np.linspace(1, 10, 5)
print(c)

# 使用random生成随机数的数组
d = np.random.rand(3, 4)
print(d)

三、ndarray对象不支持切片操作吗

ndarray数组和Python中的列表类似,都支持切片操作。可以使用冒号(:)来对数组进行切片,也可以使用布尔索引来选择数组的子集。

例如:

import numpy as np

a = np.array([1, 2, 3, 4, 5])
a_slice = a[1:3] # 选择a[1]和a[2]
print(a_slice)

b = np.array([[1, 2], [3, 4], [5, 6]])
bool_index = b > 3 # 找出元素大于3的位置,返回布尔型数组
print(bool_index)

c = b[bool_index] # 选择满足条件的元素
print(c)

四、ndarray转换为array

在Python的标准库中有一个array模块可以用来生成数组。与NumPy中的ndarray相比,Python中的数组功能较弱。但是,array和NumPy中的ndarray数组之间可以相互转换。

import array
import numpy as np

a = array.array('i', [1, 2, 3])
b = np.array(a) # array转化为ndarray
c = b.tolist() # ndarray转换为list

print(a)
print(b)
print(c)

五、快速生成ndarray

NumPy提供了一些快速创建特定类型的ndarray数组的函数,例如zeros、ones、eye等。当需要创建大量固定值的数组时,这些函数非常实用。

import numpy as np

a = np.zeros((3, 4)) # 生成3x4全为0的数组
b = np.ones((2, 3)) # 生成2x3全为1的数组
c = np.eye(3) # 3x3单位矩阵

print(a)
print(b)
print(c)

六、ndarray最大维度为32

NumPy中的ndarray数组最大可以支持32个维度。如果需要处理更高维度的数据,可以考虑使用其他库。

七、创建ndarray使用哪个函数

在NumPy中,可以使用多种函数来创建ndarray数组,包括array、arange、linspace、zeros、ones等。不同的函数适合不同的场景,可以根据具体需求进行选择。

八、总结

本文介绍了NumPy中ndarray的基本属性、创建方法、切片操作、转换为array、快速生成方法、最大维度以及创建函数选择等内容。通过本文的介绍,希望读者能够更好地理解和应用NumPy中的ndarray数组。