如何有效地将条件应用于numpy数组的索引?

拉胡尔·维什瓦卡玛(Rahul Vishwakarma)

我有一个2D NumPy数组,我想为该数组设置值,前提是其索引满足特定条件。

我可以通过以下方式使用for循环:

import numpy as np

new_a = np.ones((5,10), dtype=np.float32)
for i in range(new_a.shape[0]):
    for j in range(new_a.shape[1]):
        if (np.nan_to_num(i/np.nan_to_num(j))) >= new_a.shape[0]/new_a.shape[1]:               #(This is the condition, which I may change a little as needed)
            new_a[i, j] = 0
            
print(new_a)

''' Output:                                                                                    (This gives a upper triangular matrix)
[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [0. 0. 0. 1. 1. 1. 1. 1. 1. 1.]
 [0. 0. 0. 0. 0. 1. 1. 1. 1. 1.]
 [0. 0. 0. 0. 0. 0. 0. 1. 1. 1.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]
'''

但是问题是我想对尺寸约为的大型2D数组执行此操作(10000, 20000)因此for循环将非常慢。我如何使用NumPy或任何其他库有效地(在更少的时间内)做到这一点?

注意:我不希望解决方案创建对角矩阵(因为我想将代码应用于许多不同的条件)。我正在寻找“有效地将条件应用于numpy数组索引的解决方案”(比使用for循环要快得多的方法)的解决方案。

内森

您可以像这样获得数组索引:

import numpy as np

new_a = np.ones((5,10), dtype=np.float32)
indices = np.indices(new_a.shape)
y_indices = indices[0]
x_indices = indices[1]

要获取您的特定比较成立的索引,您可以:

locations = np.nan_to_num(indices[0] / indices[1]) >= new_a.shape[0] / new_a.shape[1]

要应用此功能,只需:

new_a[locations] = 0
print(new_a)

归来

[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [0. 0. 0. 1. 1. 1. 1. 1. 1. 1.]
 [0. 0. 0. 0. 0. 1. 1. 1. 1. 1.]
 [0. 0. 0. 0. 0. 0. 0. 1. 1. 1.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据条件有效地将函数应用于数组中的值?

来自分类Dev

如何将矩阵变换有效地应用于NumPy数组的每一行?

来自分类Dev

如何使用numpy将函数有效地应用于三维数组?

来自分类Dev

如何将矩阵变换有效地应用于NumPy数组的每一行?

来自分类Dev

如何有效地将函数逐行应用于NumPy矩阵

来自分类Dev

如何有效地将运算符应用于两个数组的笛卡尔积?

来自分类Dev

J:如何有效地将动词应用于后缀的前缀?

来自分类Dev

如何有效地将功能应用于熊猫面板的每个数据框

来自分类Dev

如何有效地将pandas.Timestamp函数应用于整个数据框/列?

来自分类Dev

有效地将阈值函数应用于 SciPy 稀疏 csr_matrix

来自分类Dev

如何有效地使用索引数组作为掩码将numpy数组转换为布尔数组?

来自分类Dev

如何基于每行的起始索引和终止索引有效地索引numpy数组

来自分类Dev

numpy:有效地与索引数组求和

来自分类Dev

numpy:有效地与索引数组求和

来自分类Dev

numpy:有效地与索引数组求和

来自分类Dev

如何有效地从numpy数组中提取由其索引给出的元素列表?

来自分类Dev

如何有效地组合许多numpy数组?

来自分类Dev

如何有效地将布尔numpy数组转换为阈值布尔数组?

来自分类Dev

如何基于位置条件有效地连接Numpy数组?

来自分类Dev

在给定转移矩阵的情况下,将转移有效地应用于状态矩阵

来自分类Dev

如何有效地将两个变量函数应用于data.frame(或matrix)元素-填充输出矩阵?

来自分类Dev

如何在Python中有效地将同一操作应用于多个变量?

来自分类Dev

如何有效地将Matlab引擎数组转换为numpy ndarray?

来自分类Dev

如何有效地将numpy数组中的对应元素相乘?

来自分类Dev

如何有效地将numpy数组中的对应元素相乘?

来自分类Dev

将函数有效地应用于神经元输出然后求和,而不将函数应用于求和

来自分类Dev

将函数应用于numpy数组元素的有效方法?

来自分类Dev

有效地将相同的操作应用于多个 DataFrame

来自分类Dev

有效地拆分熊猫数据框并将方法应用于子集

Related 相关文章

  1. 1

    如何根据条件有效地将函数应用于数组中的值?

  2. 2

    如何将矩阵变换有效地应用于NumPy数组的每一行?

  3. 3

    如何使用numpy将函数有效地应用于三维数组?

  4. 4

    如何将矩阵变换有效地应用于NumPy数组的每一行?

  5. 5

    如何有效地将函数逐行应用于NumPy矩阵

  6. 6

    如何有效地将运算符应用于两个数组的笛卡尔积?

  7. 7

    J:如何有效地将动词应用于后缀的前缀?

  8. 8

    如何有效地将功能应用于熊猫面板的每个数据框

  9. 9

    如何有效地将pandas.Timestamp函数应用于整个数据框/列?

  10. 10

    有效地将阈值函数应用于 SciPy 稀疏 csr_matrix

  11. 11

    如何有效地使用索引数组作为掩码将numpy数组转换为布尔数组?

  12. 12

    如何基于每行的起始索引和终止索引有效地索引numpy数组

  13. 13

    numpy:有效地与索引数组求和

  14. 14

    numpy:有效地与索引数组求和

  15. 15

    numpy:有效地与索引数组求和

  16. 16

    如何有效地从numpy数组中提取由其索引给出的元素列表?

  17. 17

    如何有效地组合许多numpy数组?

  18. 18

    如何有效地将布尔numpy数组转换为阈值布尔数组?

  19. 19

    如何基于位置条件有效地连接Numpy数组?

  20. 20

    在给定转移矩阵的情况下,将转移有效地应用于状态矩阵

  21. 21

    如何有效地将两个变量函数应用于data.frame(或matrix)元素-填充输出矩阵?

  22. 22

    如何在Python中有效地将同一操作应用于多个变量?

  23. 23

    如何有效地将Matlab引擎数组转换为numpy ndarray?

  24. 24

    如何有效地将numpy数组中的对应元素相乘?

  25. 25

    如何有效地将numpy数组中的对应元素相乘?

  26. 26

    将函数有效地应用于神经元输出然后求和,而不将函数应用于求和

  27. 27

    将函数应用于numpy数组元素的有效方法?

  28. 28

    有效地将相同的操作应用于多个 DataFrame

  29. 29

    有效地拆分熊猫数据框并将方法应用于子集

热门标签

归档