📜  Python中的numpy.put(1)

📅  最后修改于: 2023-12-03 14:46:38.426000             🧑  作者: Mango

Python中的numpy.put

在Python数据科学和数值计算的领域,NumPy是一种常用的库,它提供了许多用于数组操作的函数,其中之一是numpy.put。在本文中,我们将介绍numpy.put的用途,如何使用它以及一些示例。

numpy.put的功能

numpy.put(a, ind, v, mode='raise')函数基于索引值将给定的值v赋值给数组a。索引值可以是一个整数、整数列表、切片对象,也可以是一个布尔数组。

numpy.put的参数
  • a:目标数组
  • ind:数组的索引值
  • v:值或值列表, 要放到目标数组中
  • mode:表示如何处理超过数组范围的索引,mode取值可以是raisewrapclip
numpy.put的示例
示例1

下面的示例演示如何使用numpy.put将一个对角线添加到2x2的数组中,更改mode的值使得在超出数组范围的情况下得到不同的结果:

import numpy as np

arr = np.zeros((2, 2))
diag = [1, 2]

# 用mode='raise',当超出数组范围时引发异常
np.put(arr, [0, 3], diag, mode='raise')
print(arr)

# 用mode='wrap',当超出数组范围时将超出索引的值“包裹”到数组的另一侧
np.put(arr, [0, 3], diag, mode='wrap')
print(arr)

# 用mode='clip',当超出数组范围时截断值
np.put(arr, [0, 3], diag, mode='clip')
print(arr)

输出:

array([[1., 0.],
       [0., 2.]])
array([[1., 0.],
       [0., 1.]])
array([[1., 0.],
       [0., 2.]])
示例2

可以将numpy.put用于多维数组,如下例演示如何将指定列表中的值插入形状为(2, 2, 2)的数组中:

import numpy as np

arr = np.zeros((2, 2, 2), dtype=int)
lst = [1, 2, 3, 4, 5, 6]

np.put(arr, [0, 1, 2, 3, 4, 5], lst)
print(arr)

输出:

array([[[1, 2],
        [3, 4]],

       [[5, 6],
        [0, 0]]])
示例3

numpy.put还支持布尔索引,如下例演示如何将数组中所有大于2的值变为2:

import numpy as np

arr = np.array([[0, 1, 2], [3, 4, 5]])
np.put(arr, arr > 2, 2)
print(arr)

输出:

array([[0, 1, 2],
       [2, 2, 2]])
示例4

使用numpy.put可以将任意形状的值数组放入目标数组行中的下标列表指定的位置。下面的例子说明如何按行指定1-D数组中的值以构建2-D数组:

import numpy as np

arr = np.zeros((2, 2))

ind = [0, 2]
v = [1, 2, 3]

np.put(arr, ind, v)
print(arr)

输出:

array([[1., 0.],
       [2., 3.]])
总结

在NumPy中,numpy.put函数被用于基于索引值为数组赋值。numpy.put的API和示例非常好理解和使用,程序员们在日常开发中可以考虑使用numpy.put来简化自己的工作。