跳转至

NumPy赋值

在 NumPy 中,对数组元素进行赋值是一个常见的操作。赋值操作可以是对整个数组、特定元素、切片或条件筛选后的元素进行赋值。以下是一些常见的 NumPy 赋值操作及其详细示例:

对整个数组赋值

您可以使用标量值或另一个数组对整个数组进行赋值。

import numpy as np

# 使用标量值赋值
arr = np.array([1, 2, 3, 4, 5])
arr[:] = 0
print(arr)  # 输出: [0 0 0 0 0]

# 使用另一个数组赋值
arr = np.array([1, 2, 3, 4, 5])
arr[:] = np.array([5, 4, 3, 2, 1])
print(arr)  # 输出: [5 4 3 2 1]

对特定元素赋值

可以通过索引对特定元素进行赋值。

arr = np.array([1, 2, 3, 4, 5])
arr[2] = 10
print(arr)  # 输出: [ 1  2 10  4  5]

对切片进行赋值

可以对数组的切片进行赋值。

arr = np.array([1, 2, 3, 4, 5])
arr[1:4] = 0
print(arr)  # 输出: [1 0 0 0 5]

也可以使用数组切片赋值另一个数组的切片。

arr = np.array([1, 2, 3, 4, 5])
arr[1:4] = np.array([9, 8, 7])
print(arr)  # 输出: [1 9 8 7 5]

条件赋值

可以使用布尔索引对满足条件的元素进行赋值。

arr = np.array([1, 2, 3, 4, 5])
arr[arr > 3] = 0
print(arr)  # 输出: [1 2 3 0 0]

多维数组赋值

对多维数组进行赋值操作类似于一维数组,可以使用索引、切片和条件进行赋值。

# 创建一个2x3的数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 对特定元素赋值
arr[0, 1] = 10
print(arr)
# 输出:
# [[ 1 10  3]
#  [ 4  5  6]]

# 对切片赋值
arr[:, 1] = 0
print(arr)
# 输出:
# [[1 0 3]
#  [4 0 6]]

# 条件赋值
arr[arr < 5] = 99
print(arr)
# 输出:
# [[99 99 99]
#  [99 99  6]]

使用 np.putnp.place

np.put

np.put 函数用于将特定值放入数组的指定位置。

arr = np.array([1, 2, 3, 4, 5])
np.put(arr, [0, 2], [-1, -2])
print(arr)  # 输出: [-1  2 -2  4  5]

np.place

np.place 函数用于根据条件将数组中的元素替换为指定值。

arr = np.array([1, 2, 3, 4, 5])
np.place(arr, arr > 3, [99])
print(arr)  # 输出: [ 1  2  3 99 99]

广播赋值

NumPy 支持广播机制,可以对不同形状的数组进行赋值。

arr = np.zeros((3, 3))
arr[:] = [1, 2, 3]
print(arr)
# 输出:
# [[1. 2. 3.]
#  [1. 2. 3.]
#  [1. 2. 3.]]

通过这些赋值操作,您可以灵活地对 NumPy 数组进行各种修改,从而满足不同的数据处理需求。

评论