NumPy提供多种创建数组的方法,包括从列表转换、生成特定值数组及指定形状和数据类型。1. 使用np.array()将列表或元组转为数组,并可指定dtype;2. np.zeros()和np.ones()创建全0或全1数组;3. np.empty()创建未初始化的空数组以提升性能;4. np.arange()生成等步长数组,np.linspace()生成等间隔数值;5. np.full()用指定值填充数组;6. 多维数组可通过嵌套列表或reshape()构建;7. 高级方法如np.eye()创建单位矩阵,适用于线性代数运算。选择合适方法能优化内存与计算效率。

在Python中,使用NumPy创建数组是进行科学计算和数据分析的基础,它提供了多种高效的方法来初始化和构建数组。最直接的方式是利用
numpy.array()
numpy.zeros()
numpy.ones()
numpy.arange()
numpy.linspace()
NumPy作为Python科学计算的核心库,其数组(
ndarray
1. 从Python列表或元组创建数组:np.array()
np.array()
import numpy as np
# 创建一维数组
list_1d = [1, 2, 3, 4, 5]
arr_1d = np.array(list_1d)
print("一维数组:", arr_1d)
print("类型:", type(arr_1d))
# 创建二维数组 (从嵌套列表)
list_2d = [[1, 2, 3], [4, 5, 6]]
arr_2d = np.array(list_2d)
print("\n二维数组:\n", arr_2d)
# 指定数据类型 (dtype)
arr_float = np.array([1, 2, 3], dtype=float)
print("\n指定float类型的数组:", arr_float)
arr_int8 = np.array([100, 200, 50], dtype=np.int8)
print("指定int8类型的数组:", arr_int8)这里有个小细节,如果你不指定
dtype
dtype
2. 创建全零数组:np.zeros()
np.zeros()
# 创建一个3x4的全零数组
zeros_arr = np.zeros((3, 4))
print("\n全零数组 (3x4):\n", zeros_arr)
# 创建一个一维的全零数组,并指定数据类型
zeros_int = np.zeros(5, dtype=int)
print("全零整数数组 (1x5):", zeros_int)3. 创建全壹数组:np.ones()
np.zeros()
np.ones()
# 创建一个2x3的全壹数组
ones_arr = np.ones((2, 3))
print("\n全壹数组 (2x3):\n", ones_arr)
# 创建一个三维全壹数组
ones_3d = np.ones((2, 2, 2), dtype=np.float32)
print("三维全壹数组:\n", ones_3d)4. 创建空数组:np.empty()
np.empty()
np.zeros()
np.ones()
立即学习“Python免费学习笔记(深入)”;
# 创建一个2x2的空数组
empty_arr = np.empty((2, 2))
print("\n空数组 (2x2):\n", empty_arr) # 注意:输出的值是未初始化的,每次运行可能不同在我看来,
np.empty()
5. 创建指定范围的数组:np.arange()
np.arange()
range()
# 从0到9的数组
arr_range = np.arange(10)
print("\narange(10):", arr_range)
# 从5到15,步长为2的数组
arr_step = np.arange(5, 16, 2)
print("arange(5, 16, 2):", arr_step)6. 创建等间隔数组:np.linspace()
np.linspace()
# 在0到10之间生成5个等间隔的数
arr_linspace = np.linspace(0, 10, 5)
print("\nlinspace(0, 10, 5):", arr_linspace)
# 默认包含终点,可以通过endpoint=False排除
arr_linspace_no_end = np.linspace(0, 10, 5, endpoint=False)
print("linspace(0, 10, 5, endpoint=False):", arr_linspace_no_end)linspace
7. 创建填充指定值的数组:np.full()
np.full()
# 创建一个3x3的数组,所有元素都为7
full_arr = np.full((3, 3), 7)
print("\n全7数组 (3x3):\n", full_arr)
# 创建一个一维数组,所有元素都为True
full_bool = np.full(4, True, dtype=bool)
print("全True布尔数组:", full_bool)我刚开始用Python处理数据时,也觉得列表挺好用,直到数据量一大,才体会到NumPy的“真香”定律。NumPy数组和Python列表在表面上看起来都能存储一系列数据,但它们在底层实现、性能、内存使用以及功能上有着天壤之别。
本质区别:
为何选择NumPy:
简单来说,如果你只是需要一个通用容器来存储不同类型的少量数据,Python列表足够了。但一旦涉及到数值计算、大数据处理或者需要高性能的场景,NumPy数组几乎是唯一的、也是最佳的选择。
本文档主要讲述的是Sencha touch 开发指南;主要介绍如何使用Sencha Touch为手持设备进行应用开发,主要是针对iPhone这样的高端手机,我们会通过一个详细的例子来介绍整个开发的流程。 Sencha Touch是专门为移动设备开发应用的Javascrt框架。通过Sencha Touch你可以创建非常像native app的web app,用户界面组件和数据管理全部基于HTML5和CSS3的web标准,全面兼容Android和Apple iOS。希望本文档会给有需要的朋友带来帮助;感兴趣的
0
刚接触多维数组时,脑子里总有点打结,但多练几次,就会发现其实就是列表的嵌套。NumPy数组的维度(
ndim
shape
1. 创建一维数组: 一维数组是最简单的形式,可以看作是数学中的向量。
import numpy as np
vec = np.array([10, 20, 30, 40])
print("一维数组:\n", vec)
print("维度 (ndim):", vec.ndim) # 输出: 1
print("形状 (shape):", vec.shape) # 输出: (4,)np.arange()
np.linspace()
vec_range = np.arange(5)
print("\narange创建的一维数组:", vec_range)2. 创建二维数组: 二维数组可以理解为数学中的矩阵,它是由行和列组成的。
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("\n二维数组 (矩阵):\n", matrix)
print("维度 (ndim):", matrix.ndim) # 输出: 2
print("形状 (shape):", matrix.shape) # 输出: (3, 3)这里,
shape
(3, 3)
np.zeros()
np.ones()
np.full()
(rows, cols)
zeros_2d = np.zeros((2, 5)) # 2行5列的全零矩阵
print("\n2x5全零数组:\n", zeros_2d)reshape()
arr_1d_large = np.arange(12) # 0到11的一维数组
arr_2d_reshaped = arr_1d_large.reshape(3, 4) # 重新塑形为3行4列
print("\n通过reshape创建的二维数组:\n", arr_2d_reshaped)reshape
-1
reshape
arr.reshape(-1, 4)
3. 创建三维数组: 三维数组可以想象成多个二维矩阵堆叠在一起,或者是一个立方体,每个维度代表一个轴(深度、行、列)。
tensor = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
[[9, 10], [11, 12]]])
print("\n三维数组 (张量):\n", tensor)
print("维度 (ndim):", tensor.ndim) # 输出: 3
print("形状 (shape):", tensor.shape) # 输出: (3, 2, 2)这里的
shape
(3, 2, 2)
np.zeros()
np.ones()
np.full()
(depth, rows, cols)
ones_3d = np.ones((2, 3, 4)) # 2个3行4列的矩阵
print("\n2x3x4全壹三维数组:\n", ones_3d)reshape()
arr_1d_large_24 = np.arange(24) # 0到23的一维数组
arr_3d_reshaped = arr_1d_large_24.reshape(2, 3, 4) # 重新塑形为2个3行4列的矩阵
print("\n通过reshape创建的三维数组:\n", arr_3d_reshaped)掌握这些技巧后,无论数据以何种形式呈现,你都能灵活地将其组织成NumPy数组,为后续的计算和分析打下坚实基础。
数据类型这东西,一开始可能觉得没那么重要,但当你处理大量图像像素或者金融数据时,一个合适的
dtype
dtype
如何指定数据类型: 几乎所有的数组创建函数,如
np.array()
np.zeros()
np.ones()
np.empty()
np.full()
dtype
int
float
bool
np.int8
np.float32
np.complex64
import numpy as np
# 使用Python内置类型
arr_int = np.array([1, 2, 3], dtype=int)
arr_float = np.array([1.0, 2.5, 3.7], dtype=float)
arr_bool = np.array([0, 1, 0], dtype=bool) # 0会被转为False,非0转为True
print("int数组:", arr_int, arr_int.dtype)
print("float数组:", arr_float, arr_float.dtype)
print("bool数组:", arr_bool, arr_bool.dtype)
# 使用NumPy特有类型
arr_int8 = np.array([10, 20, 30], dtype=np.int8) # 8位带符号整数,范围-128到127
arr_uint16 = np.zeros(5, dtype=np.uint16) # 16位无符号整数,范围0到65535
arr_float32 = np.ones((2,2), dtype=np.float32) # 32位浮点数
arr_complex = np.array([1+2j, 3+4j], dtype=np.complex64) # 64位复数 (32位实部+32位虚部)
print("\nint8数组:", arr_int8, arr_int8.dtype)
print("uint16数组:", arr_uint16, arr_uint16.dtype)
print("float32数组:\n", arr_float32, arr_float32.dtype)
print("complex64数组:", arr_complex, arr_complex.dtype)NumPy提供了非常丰富的数据类型,从布尔值到各种位宽的整数(
int8
int16
int32
int64
uint8
float16
float32
float64
float128
complex64
complex128
对性能和内存的影响:
内存使用:
dtype
np.int8
np.int64
np.uint8
np.int64
计算性能:
float32
float64
float64
float64
float32
float16
np.int8
np.int8
dtype
在我看来,选择合适的
dtype
np.float64
np.int64
dtype
有时候,我们需要的数组并不是那么规整,比如单位矩阵,或者需要一些随机数来模拟实验,NumPy也都有很方便的接口。除了前面提到的那些基础方法,NumPy还提供了一些针对特定场景的高级数组生成方式,它们能帮助我们更高效地构建复杂的数组结构。
1. 创建单位矩阵:np.eye()
# 创建一个3x3的单位
以上就是python中如何使用numpy创建数组_Numpy创建数组(array)基础教程的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号