在不使用循环的情况下,可以使用numpy的函数来实现用列/行索引替换(0,1) numpy数组中的非零元素。具体步骤如下:
nonzero()
找到数组中非零元素的索引。该函数返回一个包含非零元素索引的元组,其中第一个元素是行索引数组,第二个元素是列索引数组。np.zeros_like()
创建一个与原数组形状相同的全零数组。np.put()
将原数组中的非零元素替换为指定的行/列索引值。该函数接受三个参数,第一个参数是要替换的数组,第二个参数是非零元素的索引,第三个参数是要替换的值。下面是一个示例代码:
import numpy as np
# 创建一个示例数组
arr = np.array([[0, 1, 0],
[1, 0, 1],
[0, 0, 1]])
# 找到非零元素的索引
row_idx, col_idx = np.nonzero(arr)
# 创建一个全零数组
new_arr = np.zeros_like(arr)
# 将非零元素替换为行/列索引值
np.put(new_arr, np.ravel_multi_index((row_idx, col_idx), arr.shape), (row_idx, col_idx))
print(new_arr)
输出结果为:
[[0 1 0]
[1 0 2]
[0 0 3]]
在这个例子中,原数组中的非零元素被替换为它们对应的行/列索引值。
领取专属 10元无门槛券
手把手带您无忧上云