首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在不使用循环的情况下用列/行索引替换(0,1) numpy数组中的非零元素?

在不使用循环的情况下,可以使用numpy的函数来实现用列/行索引替换(0,1) numpy数组中的非零元素。具体步骤如下:

  1. 首先,使用numpy的函数nonzero()找到数组中非零元素的索引。该函数返回一个包含非零元素索引的元组,其中第一个元素是行索引数组,第二个元素是列索引数组。
  2. 接下来,使用numpy的函数np.zeros_like()创建一个与原数组形状相同的全零数组。
  3. 然后,使用numpy的函数np.put()将原数组中的非零元素替换为指定的行/列索引值。该函数接受三个参数,第一个参数是要替换的数组,第二个参数是非零元素的索引,第三个参数是要替换的值。

下面是一个示例代码:

代码语言:txt
复制
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)

输出结果为:

代码语言:txt
复制
[[0 1 0]
 [1 0 2]
 [0 0 3]]

在这个例子中,原数组中的非零元素被替换为它们对应的行/列索引值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NumPy入门指南(二) | Day2

(a[2:7:2])# 从索引3开始到索引8停止,索引8包含,step为2 ''' [2 4 6] ''' # 取其中一个元素,只放置一个参数, [2],将返回与该索引相对应单个元素 print...[0 1 2 3 4 5] # t1括号里参数可以理解为索引为0,取第一;’,’ 后面是取数,写默认索引为0是第一,冒号是从索引为0开始取到最后,就是第一到最后一。...,其他元素都相等;验证numpynan和nan是不相等 ''' # 5.结合判断个数方法和 nan特性来判断nan个数 # False=0;True = 1;因而数组(t !...# 循环6次可以取到6数组,前三不含有nan;因此需要判断含是否有nan,含有nan才需要替换 # [ 0. 6. 12. 18...均值不用0代替nan好处是,如果将某某个值替换成0,将会影响一整列均值。使用不是nan其他元素均值代替,可以提高准确性。对于inf处理类似,可以替换成0。

3.1K20

70个NumPy练习:在Python下一举搞定机器学习矩阵运算

难度:1 问题:-1替换arr数组中所有的奇数。 输入: 输出: 答案: 6.如何替换满足条件元素而不影响原始数组?...难度:1 问题:使用科学记数法(1e10)漂亮打印数组rand_arr 输入: 输出: 答案: 23.如何限制numpy数组输出打印元素数量?...难度:1 问题:将python numpy数组a打印元素数量限制为最多6个。 输入: 输出: 答案: 24.如何在截断情况下打印完整numpy数组?...难度:2 问题:找出数组iris_2d是否有缺失值。 答案: 38.如何在numpy数组使用0替换所有缺失值? 难度:2 问题:在numpy数组中用0替换nan。...答案: 方法2是首选,因为它创建了一个可用于采样二维表格数据索引变量。 43.另一个数组分组时,如何获得数组第二大元素值? 难度:2 问题:第二长物种最大价值是什么?

20.6K42

numpy基础知识

二维 —- a表示数组元素行数,b表示数组元素数三个值(a, b,c ) —– 三维 —- a表示数组元素块,b表示数组每一块元素行数,c表示数组每一块元素数 计算 数组 和...其中:(0/0=nan ; 常数/0 = inf) 数组(a) 和 数组(b) 二维:(1)维数相同: 两个数组对应位置上元素进行运算(2)行数相同(a(3,1),b(3,5)): b每一和a...delimiter:分割字符串skiprows:跳过:标题) usecols:读取数据 unpack:若为true,矩阵转置 numpy 转置: (1)transpose() 方法 (2...:t[,],取指定,其中:表示都要,t[1,:]表示第二所有例: import numpy as np t = np.arange(6).reshape((3,2)) print(t..., 大于value2元素替换为value 常用函数 计算函数 求和 整个数组和:np.sum(数组) 各个对应和:np.sum(数组,axis=0) 各个对应和:np.sum(数组,axis

1.1K20

挑战NumPy100关,全部搞定你就NumPy大师了 | 附答案

★☆☆) 如何使用命令行来获得numpyadd这个函数文档?...创建一个3x3矩阵,其值范围为0到8 (★☆☆) 从[1,2,0,0,4,0]查找出所有元素 (★☆☆) 创建一个 3 * 3单位矩阵 (★☆☆) 使用随机值创建一个 $333$ 数组(★☆...如何在一个既有数组周围添加边框(0填充) (★☆☆) ? 17. 下方表达式结果是什么?...如何让一个浮点类型数组里面的值全部取整? (★☆☆) 30. 如何在两个数组之间找到相同值? (★☆☆) 31. 如何忽略所有的numpy警告(真正干活时候推荐这么干哈)??...创建一个结构化数组,其x和y坐标覆盖[0,1] x [0,1]区域 (★★☆) 47. 打印每个numpy标量类型最小和最大可表示值 (★★☆) 48. 如何打印数组所有值?

4.7K30

【学术】一篇关于机器学习稀疏矩阵介绍

矩阵稀疏性可以一个得分来量化,也就是矩阵个数除以矩阵中元素总个数。...矩阵每一存储为一个列表,每个子列表包含索引和值。 Coordinate List。一个元组列表存储在每个元组,其中包含索引索引和值。...还有一些更适合执行高效操作数据结构;下面列出了两个常用示例。 压缩稀疏。稀疏矩阵三个一维数组表示值、范围和索引。 压缩稀疏。...与压缩稀疏方法相同,除了索引外,在行索引之前被压缩和读取。 被压缩稀疏,也称为CSR,通常被用来表示机器学习稀疏矩阵,因为它支持是有效访问和矩阵乘法。...不过,我们可以很容易地计算出矩阵密度,然后从一个矩阵减去它。NumPy数组元素可以由count_nonzero()函数给出,数组元素总数可以由数组大小属性给出。

3.6K40

针对SAS用户:Python数据分析库pandas

可以认为Series是一个索引、一维数组、类似一值。可以认为DataFrames是包含二维数组索引。好比Excel单元格按和列位置寻址。...大部分SAS自动变量像_n_ 使用1作为索引开始位置。SAS迭代DO loop 0 to 9结合ARRAY产生一个数组下标超出范围错误。 下面的SAS例子,DO循环用于迭代数组元素来定位目标元素。...SAS数组主要用于迭代处理变量。SAS/IML更接近模拟NumPy数组。但SAS/IML 在这些示例范围之外。 ? 一个Series可以有一个索引标签列表。 ?...Series由整数值索引,并且起始位置是0。 ? SAS示例使用一个DO循环做为索引下标插入数组。 ? 返回Series前3个元素。 ? 该示例有2个操作。...显然,这会丢弃大量“好”数据。thresh参数允许您指定要为保留最小空值。在这种情况下"d"被删除,因为它只包含3个空值。 ? ? 可以插入或替换缺失值,而不是删除。.

12.1K20

盘一盘 Python 特别篇 20 - SciPy 稀疏矩阵

有兴趣读者可以去官网去查询。 COO 采用三元组 (row, col, data) 形式来存储矩阵中非元素信息,即把值 data 按着坐标 row 和纵坐标 col 写成两个列表。...,同样由三个一维数组 indptr, indices, data 组成, indices 存储每数据行号,与属性 data 元素一一对应 indptr 存储每数据元素起始位置 如下图所示:...:indptr 1-4 指 indices[1:4] 值即 0,1 和 4,分别又指第 0,1 和 4 ,对应数据 2,5 和 7 第 3 :indptr 4-6 指 indices[4:6...: data 保存每行元素值 rows 保存每行元素所在号 (号是按顺序排)。...'>' with 13 stored elements in List of Lists format> 检查矩阵 A 每行值对应索引

2K30

Numpy 多维数据数组实现

使用旨在创建Numpy数组函数,arrange、linspace等。...4.3numpy数组其他属性 M.itemsize#每个byte单元数 M.nbytes#byte数目 M.ndim#单位数,计数 5.使用数组 5.1编制索引 你可以使用方括号和索引来选择数组元素...# v是一个只有一个维度向量,所以一个索引就足以获得元素。 v[0] ? # M是一个矩阵(二维数组),所以需要两个索引()。 M[1,1] ?...如果我们省略了多维数组索引,就会返回一些值(一般情况下,N-1维数组)。 M ? M[1] ? M[1,:]#第一 ? M[:,1]#第一 ? 使用索引,你可以为单个数组元素赋值。...低于指数从数组末端开始计算。 A = array([1,2,3,4,5]) A[-1]#最后一个元素 A[-3:]#最后三个元素 索引分区也适用于多维数组

6.4K30

NumPy入门攻略:手把手带你玩转这款强大数据分析和计算工具

上述代码matrix[0,1],其中0代表,在NumPy0代表起始第一个,所以取是第一,之后1代表,所以取是第二。那么最后第一第二就是2这个值了。...print(matrix[:,0:2])代表是选取所有的索引是0和1。 print(matrix[1:3,:])代表是选取索引值1和2以及所有的。...print(matrix[1:3,0:2])代表是选取索引1和2以及索引是0和1所有数据。 07 数组比较 NumPy强大地方是数组或矩阵比较,数据比较之后会产生boolean值。...10 NumPy统计计算方法 NumPy内置很多计算方法。其中最重要统计方法有: sum():计算数组元素和;对于矩阵计算结果为一个一维数组,需要指定或者。...mean():计算数组元素平均值;对于矩阵计算结果为一个一维数组,需要指定或者。 max():计算数组元素最大值;对于矩阵计算结果为一个一维数组,需要指定或者

1.3K30

Python 数据分析(PYDA)第三版(二)

注意 不能假设numpy.empty会返回一个全为数组。该函数返回未初始化内存,因此可能包含“垃圾”值。只有在打算数据填充新数组时才应使用此函数。...NumPy 数组算术运算 数组很重要,因为它们使您能够在编写任何for循环情况下对数据执行批量操作。NumPy 用户称之为向量化。...数组表达式替换显式循环这种做法被一些人称为向量化。一般来说,向量化数组操作通常比它们纯 Python 等效要快得多,在任何类型数值计算中影响最大。...在数据分析,where典型用法是根据另一个数组生成一个新数组。假设你有一个随机生成数据矩阵,并且你想用 2 替换所有正值和-2 替换所有负值。...表 4.8:常用numpy.linalg函数 函数 描述 diag 返回方阵对角线(或对角线)元素作为 1D 数组,或将 1D 数组转换为具有对角线方阵 dot 矩阵乘法 trace 计算对角线元素

20100

python数据分析——数据选择和运算

PythonNumPy库提供了高效多维数组对象及其上运算功能,使得大规模数值计算变得简单快捷。通过NumPy,我们可以进行向量化运算,避免了Python原生循环低效性。...一、数据选择 1.NumPy数据选择 NumPy数组索引所包含内容非常丰富,有很多种方式选中数据子集或者某个元素。...主要有以下四种方式: 索引方式 使用场景 基础索引 获取单个元素 切片 获取子数组 布尔索引 根据比较操作,获取数组元素 数组索引 传递索引数组,更加快速,灵活获取子数据集 数组索引主要用来获得数组数据...关于NumPy数组索引和切片操作总结,如下表: 【例】利用PythonNumpy创建一维数组,并通过索引提取单个或多个元素。...[0,1] 【例3】请使用Python对如下二维数组进行提取,选择第一数据元素并输出。

12510

pythonnumpy入门简介

] [True False False]]  arr[arr == 2]  即返回[2 2]  还可以逻辑运算 arr[-(arr == 2) |(arr == 2)] 数组索引(花式索引): arr...对于复数值,可以使用更快fabs。 sqrt 计算各元素平方根。相当于arr ** 0.5 sqare 计算各元素平方。...NumPyndarray 快速元素数组函数 • 二元函数 I 类型 说明 add 将数组对应元素相加 subtract 从第一个数组减去第二个数组元素 multiply 数组元素相乘 divide...logical_and, logical_or, logical_xor 执行元素真值逻辑运算,最终产生布尔型数组数组表达式代替循环做法,通常被称为矢量化。...以一维数组形式返回方阵对角线(或对角线元素),获将一维数组转换 为方阵(对角线元素为0)。

1.4K30

科学计算库—numpy随笔【五一创作】

1.虽然Python数组结构列表list实际上就是数组,但是列表list保存是对象指针,list元素在系统内存是分散存储,例如[0,1,2]需要3个指针和3个整数对象,浪费内存和计算时间...补充: ”1矩阵“ np.ones((row,col)) 8.1.4、numpy 哪个是? 最后两组数为。...3)叉乘(np.cross)、外乘(np.outer) 细说NumPy数组四种乘法使用 8.1.7、numpy 索引和切片操作 举个例子: 补充: 花式索引 通过整型数组进行索引 花式索引为什么有两层括号...以数组对象 arr 为例,向arr[]传入数组作为参数,所以才有了两个中括号 在机器学习中常通过使用花式索引来打乱数据集样本顺序,避免机器学习模型学习到样本位置噪声,对于监督学习数据集如果打乱了样本还需要打乱相对应标签值...,样本与标签都是一一对应关系,使用花式索引能够轻松解决。

71540

【动手学深度学习笔记】之实现softmax回归模型

,out=None) → Tensor#gather作用是这样,index实际上是索引,具体是(dim=1)还是(dim=0)索引要看前面dim 指定,输出大小由index决定 这个函数原理我归结如下...假设输入与上同;index=B;输出为CB每个元素分别为b(0,0)=0,b(0,1)=0 b(1,0)=1,b(1,1)=0 如果dim=0()则取B中元素号,:b(0,1...)1b(0,1)=0,所以Cc(0,1)=输入(0,1)处元素2 如果dim=1()则取B中元素号,:b(0,1)0b(0,1)=0,所以Cc(0,1)=输入(0,0)处元素1...根据得到索引在输入取值#[1,2],[3,2] 因为softmax回归模型得到结果可能是多个标签对应概率,为了得到与真实标签之间损失值,我们需要使用gather函数提取出在结果中提取出真实标签对应概率...[0] #通过shape[0]获取y维度(元素数量 return right_sum/n 1.7优化算法 softmax回归应用优化算法同样使用小批量随机梯度下降算法。

75520

Numpy

-1]) #9 #2.多维数组 #也是通过括号来索引和切片.在括号,使用逗号进行分割,逗号前面的是, #逗号后面的是,如果多维数组只有一个值,那么这个值就是 a2=np.random.randint...如果是多维数组(这里以二维为例),那么部分和部分,都是遵循一维度数组方式,可以使用整形,切片,还可以使用括号形式来代表连续。...提取条件可以有多个,那么如果有多个,可以使用&来代替且,|来代替或,如果有多个条件,那么每个条件要使用圆括号括起来。 # 值替换 利用索引,也可以做一些值替换。...]=1 #把元素小于3全部替换为1 print(a3) a3=np.where(a3<5,1,0)# 把a3小于10 全部替换为1 其余为0 print(a3) 总结: ​ 可以使用索引或者切片来替换...使用条件索引替换。 ​ 使用where函数来实现。 # 数组广播机制 # 数组与数计算 在Python列表,想要对列表中所有的元素都加一个数,要么采用map函数,要么循环整个列表进行操作。

3.5K20

NumPy 1.26 中文官方指南(三)

NumPy 数组赋值通常存储为 n 维数组,只需要最小类型来存储对象,除非你指定维数和类型。NumPy 执行元素元素操作,所以*来乘以 2D 数组不是矩阵乘法 - 这是元素元素乘法。...1xn 或 nx1)或 1D NumPy 数组 a(长度 n)最后一个元素 a(2,5) a[1, 4] 访问二维数组 a 第二第五元素 a(2,:) a[1] 或 a[1, :] 二维数组...索引:MATLAB 使用基于一索引,因此序列初始元素索引为 1。Python 使用基于索引,因此序列初始元素索引为 0。关于这一点可能会产生混淆和激烈争论,因为每种方式都有其优势和劣势。...MATLAB 和 NumPy & 和 | 操作符之间显著区别包括: 逻辑 {0,1} 输入:NumPy 输出是输入按位与。MATLAB 将任何值视为 1,并返回逻辑与。...然而,用户仍然希望使用熟悉 NumPy API 和最小(理想情况下移植开销重新使用现有代码来处理这些数组

22810

Python 数据处理:NumPy

比起Python内置序列,NumPy数组使用内存更少。 NumPy可以在整个数组上执行复杂计算,而不需要Pythonfor循环。...print(arr2d[0,2]) 二维数组索引方式,轴0作为,轴1作为: 在多维数组,如果省略了后面的索引,则返回对象会是一个维度低一点ndarray(它含有高一级维度上所有数据...对于复数值,可以使用更快fabs sqrt 计算各元素平方根。相当于arr** 0.5 square 计算各元素平方。...默认情况下NumPy数组是按优先顺序创建。在空间方面,这就意味着,对于一个二维数组,每行数据项是被存放在相邻内存位置上。...广播方式对行进行距平化处理会稍微麻烦一些。幸运是,只要遵循一定规则,低维度值是可以被广播到数组任意维度(比如对二维数组减去平均值)。

5.5K11

一起来学演化计算-matlab基本函数find

找到元素索引和值 语法 k = find(X) k = find(X)返回一个向量,其中包含数组X每个元素 线性索引 。...如果X是一个向量,那么find返回一个与X方向相同向量 如果X是一个多维数组,那么find返回结果线性索引向量 如果X包含元素或为空,则find返回一个空数组 k = find(X,n)...X最后n个元素 [row,col] = find( ___ ) 使用前面语法任何输入参数返回数组X每个元素下标 [row,col,v] = find( ___ ) 返回向量v,...其中包含X元素 find:找出向量或矩阵中非元素位置标识 在许多情况下,都需要对矩阵符合某一特定条件元素位置进行定位,将某一矩阵元素设为1等。...[i,j]=find(A) 此函数返回矩阵A元素表示,其中i代表标而j代表列标。此函数经常用在稀疏矩阵。在多维矩阵通常将第一维i表示,将其余各维作为第二维,j表示。 ?

1.4K70

SciPy 稀疏矩阵(5):CSR

因此,获取 LIL 格式稀疏矩阵某一(第 i 元素索引元素值只需要分别访问 rows 属性(数组)第 i 个元素(动态数组)和 data 属性(数组第 i 个元素(动态数组)...如图所示,我们可以发现 LIL 格式稀疏矩阵虽然可以快速获取某一信息,但是它任意相邻两元素索引以及对应元素值并不是存储在一段连续内存空间中,换句话说就是当缓存第 i 元素信息即将用完时候...,shape 是矩阵行列数(M N ),默认会通过元素索引外加上元素索引进行推断。...csr_matrix((data, indices, indptr), [shape=(M, N)]):第 i 元素索引是 indices[indptr[i]:indptr[i+1]],对应元素值存储在...part 06、下回预告 BETTER LIFE 不同于 LIL 格式稀疏矩阵把相邻两元素索引元素值存储在内存不同位置,CSR 格式稀疏矩阵相邻两元素索引元素值在内存是紧密相连

8210
领券