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

从左到右用非零值填充一维NumPy数组的零值?

要从左到右用非零值填充一维NumPy数组的零值,可以使用NumPy中的函数np.where()来实现。np.where()函数可以根据条件选择性地替换数组中的元素。

以下是一个示例代码:

代码语言:txt
复制
import numpy as np

def fill_zeros(arr):
    non_zero_values = arr[arr != 0]  # 获取非零值
    zero_indices = np.where(arr == 0)[0]  # 获取零值的索引
    num_zeros = len(zero_indices)  # 零值的数量

    # 如果非零值的数量小于等于零值的数量,则将非零值按顺序填充到零值位置
    if len(non_zero_values) <= num_zeros:
        arr[zero_indices[:len(non_zero_values)]] = non_zero_values
    else:
        # 如果非零值的数量大于零值的数量,则将非零值按循环方式填充到零值位置
        arr[zero_indices] = np.tile(non_zero_values, num_zeros // len(non_zero_values) + 1)[:num_zeros]

    return arr

# 示例用法
arr = np.array([0, 2, 0, 4, 0, 6, 0])
filled_arr = fill_zeros(arr)
print(filled_arr)

输出结果为:

代码语言:txt
复制
[2 2 4 4 6 6 0]

在这个示例中,我们首先使用arr[arr != 0]获取了数组中的非零值,然后使用np.where(arr == 0)[0]获取了零值的索引。接下来,我们判断了非零值的数量和零值的数量的关系,如果非零值的数量小于等于零值的数量,则直接将非零值按顺序填充到零值位置;如果非零值的数量大于零值的数量,则使用np.tile()函数将非零值按循环方式填充到零值位置。最后返回填充后的数组。

这个方法可以适用于任意一维NumPy数组的填充操作。

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

相关·内容

填充JavaScript数组几种方法

start——可选参数,用于指示要填充数组起始索引。默认是0 end——可选参数,结束索引,默认数组实例长度。结束索引本身不包括在内 它返回一个修改后数组,其中填充。...使用计算填充 要用计算填充数组,我们可以使用 Array.from 方法,然后将回调传递给第二个参数,以将映射到我们在每个条目中想要内容。...undefined填充填充 undefined,我们只需使用一个参数(其为0或更大整数)调用 Array 构造函数即可。...因此,arr 是 [" foo ", " foo ", " foo ", " foo ", " foo ", " foo "]。 总结 有几种方法可以填充数组。...Array 构造函数与扩展运算符组合也可以用于填充数组。 最后,我们可以在字符串上调用 repeat来重复它,然后调用 split 以拆分为数组项。

2.6K30

【Python深度学习前传】NumPy获取数组、分片以及改变数组维度

获取数组数组分片 NumPy数组也指出与Python列表相同操作,例如,通过索引获得数组,分片等。...下面的例子演示了如何通过索引获得NumPy数组,以及对NumPy数组使用分片操作。...from numpy import * # 定义一个二维NumPy数组 a = array([[1,2,3],[4,5,6],[7,8,9]]) # 输出数组a第1行第1列,运行结果:1 print...1*3二维数组,运行结果:[[1 2 3]] print(a[0:1]) # 分片操作,获取1*3二维数组第1行,运行结果:[1 2 3] print(a[0:1][0]) # 分片操作,将3...本节将介绍NumPy中与数组维度相关常用API使用方法。 下面的例子演示了如何利用NumPyAPI对数组进行维度操作。

2.6K20
  • 聊一聊Go语言中,它有什么

    今天与大家聊一聊Go语言中。大学时期我是一名C语言爱好者,工作了以后感觉Go语言和C语言很像,所以选择了Go语言工作,时不时就会把这两种语言一些特性做个比较,今天要比较就是特性。...此初始化是递归完成,例如,如果未指定任何,则结构体数组每个元素字段都将其清。...有什么 通过来提供默认 我们在看一些Go语言库时候,都会看到在初始化对象时采用"动态初始化"模式,其实就是在创建对象时判断如果是就使用默认,比如我们在分析hystrix-go这个库时...因为Go语言让程序变得更简单了,有些场景我们不需要显示初始化就可以直接,举几个例子: 切片,他是nil,即使不用make进行初始化也是可以直接使用,例如: package main import...并不是万能 Go语言设计大大便利了开发者,但是并不是万能,有些场景下是不可以直接使用: 未显示初始化切片、map,他们可以直接操作,但是不能写入数据,否则会引发程序panic:

    45420

    Excel公式技巧93:查找某行中第一个所在列标题

    有时候,一行数据中前面的数据都是0,从某列开始就是大于0数值,我们需要知道首先出现大于0数值所在单元格。...例如下图1所示,每行数据中非出现位置不同,我们想知道出现单元格对应列标题,即第3行中数据。 ?...图2 在公式中, MATCH(TRUE,B4:M40,0) 通过B4:M4与0比较,得到一个TRUE/FALSE数组,其中第一个出现TRUE就是对应,MATCH函数返回其相对应位置...ADDRESS函数中第一个参数值3代表标题行第3行,将3和MATCH函数返回结果传递给ADDRESS函数返回对应标题行所在单元格地址。...然后,传递给INDIRECT函数得到该单元格地址对应。 小结:本示例数组公式相对简单,也好理解,有助于进一步理解数组公式运作原理。 undefined

    8.8K30

    【从开始学习Go语言】八.Go语言数组切片引用类型与类型(总结)

    一.数组 go语言数组在之前一些例子中有引用过,go数组在创建时需要声明存储数据类型,长度,并且长度在确定后便不可增加,类似python中元组 数组声明方式有多种: 第一种 package...fmt.Println(array) //这里输出就发现内容已经被填充,当然还有更简单方法做这非常简单操作,这里只是基础解释 } 第二种 package main...,其实就是一个数组中嵌套另一个数组,注意数组设置长度不包括二维数组或多维数组长度。...;当切片长度增加,go会根据这个切片原始长度叠加,假如第二次添加数据没有达到12,它是不会再次叠加 } ---- 四.类型与引用类型 这里一个例子来介绍吧: package main import...3 4] array:[1 5 3 4] array内存地址:0xc00000c080 b:[1 5 3 4] b内存地址:0xc00000c0a0

    4K250

    【从开始学习Go语言】八.Go语言数组切片引用类型与类型(总结)

    【从开始学习Go语言】Go语言数组与切片引用类型与类型 一.数组 二.多维数组 三.切片 四.类型与引用类型 ---- 一.数组 go语言数组在之前一些例子中有引用过,go数组在创建时需要声明存储数据类型...array [10]int //创建并初始化默认为0,长度为10 fmt.Println(array) //这里打印可以看到输出数组全部都是10 array[0]=1...//[]中是索引 array[1]=2 array[2]=3 //··· fmt.Println(array) //这里输出就发现内容已经被填充,当然还有更简单方法做这非常简单操作...;当切片长度增加,go会根据这个切片原始长度叠加,假如第二次添加数据没有达到12,它是不会再次叠加 } ---- 四.类型与引用类型 这里一个例子来介绍吧: package main import...3 4] array:[1 5 3 4] array内存地址:0xc00000c080 b:[1 5 3 4] b内存地址:0xc00000c0a0 ?

    4K240

    2024-06-29:go语言,给定一个整数数组 `nums`, 描述了一只蚂蚁根据数组元素向左或向右移动。 蚂蚁每次

    2024-06-29:go语言,给定一个整数数组 nums, 描述了一只蚂蚁根据数组元素向左或向右移动。 蚂蚁每次移动步数取决于当前元素正负号。...请计算蚂蚁返回到边界次数。 边界是一个无限空间,在蚂蚁移动一个元素步数后才会检查是否到达边界。 因此,只有当蚂蚁移动距离为元素绝对时才算作达到了边界。...大体步骤如下: 1.初始化变量:sum 存储当前蚂蚁移动位置,ans 记录蚂蚁返回到边界次数,初始为 0。...2.迭代数组 nums: 2.1.对于每个元素 x: 2.1.1.将该元素加到 sum 上,即蚂蚁移动到新位置。...总时间复杂度分析: • 遍历整个数组 nums 需要 O(N) 时间复杂度,其中 N 是 nums 长度。

    8520

    如何使用pythonSciPy包处理稀疏矩阵

    SciPy稀疏模块介绍 在Python中,稀疏数据结构在scipy中得到了有效实现。稀疏模块,其中大部分是基于Numpy数组。...实现背后思想很简单:我们不将所有存储在密集矩阵中,而是以某种格式存储(例如,使用它们行和列索引)。...为了有效地表示稀疏矩阵,CSR使用三个numpy数组来存储一些相关信息,包括: data(数据):,这些是存储在稀疏矩阵中 indices(索引):列索引数组,从第一行(从左到右)开始...,我们标识位置并在该行中返回它们索引。...在下面的图中,第一个出现在第0行第5列,因此5作为索引数组第一个出现,然后是1(第1行,第1列)。 indptr(指针):表示索引指针,返回一个行开始数组

    2.6K20

    python中griddata外插_利用griddata进行二维插

    ’, fill_value=numpy.nan, rescale=False) points:二维数组,第一维是已知点数目,第二维是每一个点 \(x,y\) 坐标 values:一维数组,和 points...第一维长度一样,是每个坐标的对应 \(z\) xi:需要插空间,一般 numpy.mgrid 函数生成后传入 method:插方法 nearest linear cubic fill_value...:无数据时填充数据 该方法返回是和 xi shape 一样二维数组 【example】 import numpy as np import matplotlib.pyplot a plt from...), method=”cubic”, fill_value=0) # 这里通过imshow显示时,坐标思维要按照计算机来,普通图片是2维数组 # x 是最终结果第一维,下标是从上到下由增加 # y...是最终结果第二维,下标是从左到右增加 plt.subplot(1, 1, 1) plt.title(“0°”) plt.imshow(grid, cmap=’jet’) # contourf jet

    3.6K10

    如何使用python处理稀疏矩阵

    大多数机器学习从业者习惯于在将数据输入机器学习算法之前采用其数据集矩阵表示形式。矩阵是一种理想形式,通常用行表示数据集实例,列表示要素。 稀疏矩阵是其中大多数元件是矩阵。...通常,我们数据是密集,拥有的每个实例填充特征列。...我们需要一种方法来跟踪不在哪里。那么关于列表,我们在其中一个列中跟踪row,col项目的存在以及在另一列中其对应情况呢?请记住,稀疏矩阵不必只包含和一。...只要大多数元素为,无论元素中存在什么,矩阵都是稀疏。 我们还需要创建稀疏矩阵顺序, 我们是一行一行地行进,在遇到每个元素时存储它们,还是一列一列地进行?...数组位置,因此,目前并没有迫切要求将它们转换回标准Numpy表示形式。

    3.5K30

    Python进阶之NumPy快速入门(四)

    概要 1、掌握NumPy排序函数,让排序变得得心应手; 2、掌握NumPy条件筛选,玩转条件筛选数组元素; 3、掌握NumPy线性代数,程序轻松学习线性代数。...函数格式如下: numpy.arg 函数返回数组从小到大索引。...其中数组a中最大元素是90,总索引为7。当axis=0时候,从左到右每一列最大数字对应索引分别为[1,2,0]。当axis=1时候,从上到下每一行最大数字对应索引分别为[2,0,1]。...],[50,0,60]]) print (np.nonzero(b)) print (b[np.nonzero(b)]) 讲解:对于数组b,我们先打印它元素对应索引。...一个有六个元素是非,运行结果形式是先给定行索引,然后是列索引。然后我们再把索引作为数组b索引就可以挑选出数组b中所有元素,返回形式为一维数组

    84530

    稀疏矩阵概念介绍

    数组 Value array:顾名思义,它将所有元素存储在原始矩阵中。数组长度等于原始矩阵中非条目的数量。在这个示例中,有 7 个元素。因此数组长度为 7。...(这里使用从开始索引) 行索引数组 Row index array:该数组存储所有当前行和之前行中非累积计数。row_index_array [j] 编码第 j 行上方总数。...第四个3:表示第4行起始,因为第3行没有0,所以0总数还是3 第五个4:没有第5行,所以可以认为这个是整个矩阵中所有0总数 绘制样本数据 同样我们也可以对稀疏矩阵进行可视化 import...首先,这里是 plt.spy () 函数介绍:绘制二维数组稀疏模式。这可视化了数组。 在上图中,所有黑点代表。...这意味着,超过 90% 数据点都用填充。回到嘴上面的图,这就是上面我们看到为什么pandas占用内存多原因。 我们为什么要关心稀疏矩阵? 好吧,使用稀疏矩阵有很多很好理由。

    1.1K30

    稀疏矩阵概念介绍

    数组 Value array:顾名思义,它将所有元素存储在原始矩阵中。数组长度等于原始矩阵中非条目的数量。在这个示例中,有 7 个元素。因此数组长度为 7。...(这里使用从开始索引) 行索引数组 Row index array:该数组存储所有当前行和之前行中非累积计数。row_index_array [j] 编码第 j 行上方总数。...第四个3:表示第4行起始,因为第3行没有0,所以0总数还是3。 第五个4:没有第5行,所以可以认为这个是整个矩阵中所有0总数。...首先,这里是 plt.spy () 函数介绍:绘制二维数组稀疏模式。这可视化了数组。 在上图中,所有黑点代表。...这意味着,超过 90% 数据点都用填充。回到最上面的图,这就是上面我们看到为什么pandas占用内存多原因。 我们为什么要关心稀疏矩阵? 好吧,使用稀疏矩阵有很多很好理由。

    1.6K20

    你知道卷积是如何发挥作用吗?使用opencv4 解剖卷积功能

    将内核中心放置 在此 (x,y)坐标上。 对输入图像区域和内核进行逐元素乘法,然后将这些乘法运算求和为单个。 这些乘法总和称为 内核输出。...有了我们 image和kernel (我们假设是NumPy数组),然后确定每个空间空间尺寸(即宽度和高度)(第10和11行)。...还存在其他填充方法,包括 填充填充边界-在构建卷积神经网络时非常常见)和 环绕(其中边界像素是通过检查图像另一端确定)。在大多数情况下,您会看到重复填充填充。...第29行从中提取感兴趣区域(ROI)图片 使用NumPy数组切片。 通过在第34行将ROI 和 kernel 进行卷积 运算,然后对矩阵中条目求和。...输出 ķ 然后存储在 输出 数组位于相同 (x,y)坐标(相对于输入图像)。

    77010

    Python实现所有算法-高斯消除法

    为了对矩阵执行行缩减,可以使用一系列基本行操作来修改矩阵,直到矩阵左下角尽可能地填充。基本行操作分为三种类型: 1.交换两行, 2.将一行乘以一个数, 3.将一行倍数添加到另一行。...然后通过使用行交换操作,总是可以对行进行排序,以便对于每个行,前导系数位于上一行前导系数右侧。如果是这种情况,则称矩阵为行梯形. 所以矩阵左下部分只包含,并且所有的行都在下方。...没有关系,大致懂就行 程序实现上面,我们导入这些内容 为了精度,导入float64 以及导入一个N维数组,在内部是所以ndarray封装 这样学习态度是不对,我们需要看看Numpy..., dtype=float) 这个也是注解写法,意思是返回一个数组0填充: zeros函数样子 第一个参数,元组,说明样子。...返回是具有给定形状、数据类型和顺序数组。 首先,reversed 函数返回一个反转迭代器。这个为什么倒着算呢?是因为倒着算对算法来讲有一些优点。

    1.7K30
    领券