Numpy Python中通过迭代方式构建数组的方式
在Python中,Numpy是一种广泛使用的库,主要用于高效处理数字运算和数据分析任务。其中,其最重要的特性之一就是numpy.ndarray数组,可以通过许多不同的方式构建和操作。
然而,对于初学者来说,最常见的问题之一就是如何通过迭代的方式对数组进行构建。在这篇文章中,我们将介绍几种不同的方法来解决这个问题,并且提供一些示例说明。
阅读更多:Numpy 教程
通过列表创建数组
最简单的方法就是通过列表创建一个数组。这可以通过numpy的array函数实现,如下所示:
import numpy as np
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
print(my_array)
输出:
[1 2 3 4 5]
这里,我们首先导入了numpy库。然后,我们创建了一个Python列表my_list,并将其转换为numpy数组my_array。最后,我们将my_array打印出来,以验证它的正确性。
这种方法是最基础的,由于在Python中的任何迭代器都可以转换为一个列表,这意味着可以轻松地将循环数据添加到numpy数组中。
例如,在下面的代码中,我们使用一个循环来构建一个包含0到99的整数的数组:
import numpy as np
my_list = []
for i in range(100):
my_list.append(i)
my_array = np.array(my_list)
print(my_array)
输出:
[ 0 1 2 3 ... 96 97 98 99]
使用numPy函数创建数组
另一种常见的方法是使用numpy函数,这些函数可以生成各种类型的数组。有一个重要的函数是numpy.arange(),可以用来生成一个包含给定范围内数字的数组,如下所示:
import numpy as np
my_array = np.arange(0, 10, 1)
print(my_array)
输出:
[0 1 2 3 4 5 6 7 8 9]
在这里,我们使用了numpy.arange()函数,它接受三个参数。第一个是生成的数组的起始值。在这里,我们开始于0。第二个参数是该数组的最终值,并且数组上产生的最终值是比最终值小的值。在这个例子中,我们的最终值是10,但这个数组在9之前停止。第三个也是可选参数,它是数组中从一个值到下一个值的范围。在这里,我们以1为间隔。
numpy.arange()函数有很多应用,如生成一维的等差数列、二维的网格数据等。
# 生成一维的等差数列
import numpy as np
a = np.arange(0, 5, 0.5)
print(a)
# 输出
# [0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5]
# 生成二维的网格数据
import numpy as np
x = np.arange(-4, 4.1, 0.2)
y = np.arange(-4, 4.1, 0.2)
xx, yy = np.meshgrid(x, y)
z = np.sin(xx**2+yy**2)/(xx**2+yy**2)
print(x.shape, y.shape, xx.shape, yy.shape, z.shape)
# 输出
# (41,) (41,) (41, 41) (41, 41) (41, 41)
使用zeros和ones创建数组
numpy中还有两个常用的函数zeros()和ones(),它们分别用于创建元素全为0和1的数组,如下所示:
import numpy as np
my_zeros_array = np.zeros(5)
my_ones_array = np.ones((3,3))
print(my_zeros_array)
print(my_ones_array)
输出:
[0. 0. 0. 0. 0.]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
在zeros()函数中,我们传递了5作为参数,这意味着我们将获得长度为5的数组,并且所有这些值都将为0。在ones()函数中,我们传递了一个2D元组(3,3),这意味着我们将获得3×3的数组,并且所有这些值都将为1。
使用fromfunction创建数组
fromfunction()是numpy的一个强大函数,可以根据一个函数从输入坐标生成一个数组。例如,下面的代码创建了一个3×3的数组,其中每个元素等于其行加其列的和:
import numpy as np
def my_function(row, col):
return row + col
my_array = np.fromfunction(my_function, (3,3))
print(my_array)
输出:
[[0. 1. 2.]
[1. 2. 3.]
[2. 3. 4.]]
在这里,我们定义了一个简单的函数,该函数接受两个参数——行和列,返回它们的和。然后,我们使用fromfunction()函数来生成一个3×3的数组,并将其传递给这个函数。
使用resize创建数组
resize()函数可以用来调整现有数组的大小。例如,下面的代码创建了一个2×2的数组,并将其调整为一个4×4的数组:
import numpy as np
my_array = np.array([[1, 2], [3, 4]])
my_array.resize((4, 4))
print(my_array)
输出:
[[1 2 0 0]
[3 4 0 0]
[0 0 0 0]
[0 0 0 0]]
在这里,我们首先创建了一个2×2的数组。然后,我们使用resize()函数将其调整为一个4×4的数组。在这个新数组中,未使用的位置被填充了0。
总结
在本文中,我们介绍了一些常见的方法,通过迭代方式构建数组。包括通过列表创建数组、使用numpy函数创建数组、使用zeros和ones创建数组、使用fromfunction创建数组以及使用resize调整数组大小。
无论您是新手还是有经验的Numpy开发人员,这些技巧都可以帮助您更好地理解如何使用迭代方式构建numpy数组,并有效地操作和处理您的数据。