Numpy 数组的初始化和填充方法

Numpy 数组的初始化和填充方法

在进行数据分析和机器学习等相关领域的编程时,Numpy库是必不可少的工具之一。而在Numpy中,数组的创建和填充是非常常见的操作。在本文中,我们将介绍一些最佳的方法来初始化和填充一个Numpy数组。

阅读更多:Numpy 教程

创建全0或全1的数组

创建一个全0或全1的Numpy数组是我们经常需要的操作之一。在Numpy中,可以使用zeros和ones函数来完成这个任务。

import numpy as np

# 创建一个形状为(3,3)的全0数组
arr1 = np.zeros((3,3))
print(arr1)

# 创建一个形状为(2,4)的全1数组
arr2 = np.ones((2,4))
print(arr2)
Python

输出结果:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]
Python

创建随机数组

除了创建全0或全1数组,我们有时还需要创建随机数组。在Numpy中,可以使用random模块来生成随机数组。

import numpy as np

# 创建一个形状为(3,3)的随机数组,数值在[0,1)之间
arr1 = np.random.random((3,3))
print(arr1)

# 创建一个形状为(2,4)的随机整数数组,范围在[0,10)之间
arr2 = np.random.randint(0, 10, size=(2,4))
print(arr2)
Python

输出结果:

[[0.54018267 0.96424058 0.92994892]
 [0.76448439 0.16476252 0.39494737]
 [0.09921272 0.75228274 0.00225263]]
[[1 5 8 9]
 [2 6 5 1]]
Python

从现有的数据创建数组

有时候,我们需要从现有的数据中创建Numpy数组。在Numpy中,可以使用array函数来创建数组。

import numpy as np

# 从Python列表创建数组
lst = [1,2,3,4,5]
arr1 = np.array(lst)
print(arr1)

# 从元组创建数组
tup = (6,7,8,9,10)
arr2 = np.array(tup)
print(arr2)

# 从字符串创建数组
str = "Hello World!"
arr3 = np.array(str)
print(arr3)
Python

输出结果:

[1 2 3 4 5]
[ 6  7  8  9 10]
['H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd' '!']
Python

另外,如果我们需要从已有的数组中创建一个新的数组,可以使用copy来避免共享内存的问题。

import numpy as np

# 从已有数组创建新数组
arr1 = np.array([1,2,3,4,5])
arr2 = arr1.copy()
print(arr2)

# 修改arr1中的一个元素,不会影响arr2
arr1[0] = 0
print(arr1)
print(arr2)
Python

输出结果:

[1 2 3 4 5]
[0 2 3 4 5]
[1 2 3 4 5]
Python

使用arange和linspace创建数组

除了常用的数组创建方法,Numpy还提供了一些更加灵活的方式。我们可以使用arange和linspace来创建特定规格的数组。

import numpy as np

# 从0到9,以1为步长,创建一维数组
arr1 = np.arange(0, 10, 1)
print(arr1)

# 从1到10,分成10个点,创建一维数组
arr2 =np.linspace(1, 10, num=10)
print(arr2)

# 从0到1,分成5个点,创建一维数组
arr3 = np.linspace(0, 1, num=5)
print(arr3)
Python

输出结果:

[0 1 2 3 4 5 6 7 8 9]
[ 1.          1.88888889  2.77777778  3.66666667  4.55555556  5.44444444
  6.33333333  7.22222222  8.11111111  9.        ]
[0.   0.25 0.5  0.75 1.  ]
Python

数组的填充

在Numpy中,除了创建数组,我们还需要对数组进行填充或修改元素值的操作。下面是一些常用的数组填充方法。

使用fill方法填充

fill方法可以将数组中所有的元素设置为同一个值。

import numpy as np

# 创建一个形状为(3,3)的全0数组,然后填充为9
arr = np.zeros((3,3))
arr.fill(9)
print(arr)
Python

输出结果:

[[9. 9. 9.]
 [9. 9. 9.]
 [9. 9. 9.]]
Python

使用put方法填充

put方法可以根据索引来填充数组。我们可以指定一个索引列表和要填充的值列表,然后在指定的索引位置上填充相应的值。

import numpy as np

# 创建一个形状为(3,3)的全0数组
arr = np.zeros((3,3))

# 按指定索引填充相应的值
np.put(arr, [1,4,7], [1,2,3])
print(arr)
Python

输出结果:

[[0. 1. 0.]
 [2. 0. 0.]
 [3. 0. 0.]]
Python

使用索引号填充

我们也可以直接使用索引号来填充数组。这种方法适合于我们只需要填充一部分位置的情况。

import numpy as np

# 创建一个形状为(3,3)的全0数组
arr = np.zeros((3,3))

# 通过索引号填充数组
arr[0,1] = 1
arr[1,0] = 2
print(arr)
Python

输出结果:

[[0. 1. 0.]
 [2. 0. 0.]
 [0. 0. 0.]]
Python

使用布尔索引填充

布尔索引可以用来指定需要填充的位置。我们可以先创建一个布尔数组来标记需要填充的位置,然后将对应位置的值设置为特定的数值。

import numpy as np

# 创建一个形状为(3,3)的全0数组
arr = np.zeros((3,3))

# 创建一个形状与数组相同的布尔数组
bool_arr = np.array([[False, True, False],
                     [True, False, False],
                     [False, False, True]])

# 使用布尔索引填充数组
arr[bool_arr] = 1
print(arr)
Python

输出结果:

[[0. 1. 0.]
 [1. 0. 0.]
 [0. 0. 1.]]
Python

总结

在Numpy中,数组的创建、修改和填充是非常常见的操作。根据具体的需求,我们可以选择不同的方法来完成这些操作,如使用zeros、ones、random、array、arange和linspace函数来创建数组,使用fill、put、直接指定索引号和布尔索引来填充数组等。在实际编程中,我们需要根据具体的需求选择最合适的方法,从而提高程序的效率和可读性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册