python - 通过两个不同长度的数组和索引操作运行 for 循环

标签 python arrays numpy for-loop indexing

我需要对两个不同长度的数组运行 for 循环。一个数组是 8760 x 1,另一个数组是 10 x 1。如果短数组中的值等于长数组中的值的索引,我不想更改任何内容。如果长数组中的值的索引不等于短数组中的值,我想将其设置为零。我知道我的代码是错误的,但这是一个开始。我无法附加更长的数组,但现在它可能是随机值。

I = np.array([4993, 4994, 4995, 5016, 5017, 5018, 5019, 5042, 5043, 5066])

import numpy as np

A = np.loadtxt('A.txt')
I = np.loadtxt('I.txt')

for i in A:
    for j in I:
        if A[j] != I[j]:
            i = 0

最佳答案

主要原理

当您需要for时要遍历数组的索引,请使用“计数”循环——迭代一组整数的循环。使用for index in range(len(您的 list ) .

您的具体问题

鉴于您的 I ,我认为您要求设置 A 的所有值至0 (例如分配 A[5] = 0 ),例如 A[4993] 除外将保持不变,对于 I 中的索引依此类推.

good_elements_indices = I
all_elements = A
for all_elements_index in range(len(all_elements)):
    if all_elements_index not in good_elements_index:
        A[all_elements_index] = 0

其他评论

  • Python 风格使用小写变量名称,单词之间使用下划线,并且不使用缩写。因此我重命名为IA 。请参阅PEP 8: Python Style Guide
  • in运算符是 Python 的核心。因为您已经导入 numpy和你的good_elements_index又名 I已经是 numpy.array对象,它更快,但使用起来不太通用 numpy.isin按照 mrcl 建议的功能.
  • 您的问题涉及“通过 2 个数组运行 for 循环”。这表明没有一个for循环但两个 for循环,嵌套,如您的问题代码所示。 in运算符实际上像 for 一样进行迭代循环遍历列表测试集合中是否存在。

关于python - 通过两个不同长度的数组和索引操作运行 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44875888/

相关文章:

python - 如何使用隔离林

python - matplotlib 散点图 x 轴标签

Javascript 如何将项目推送到对象中

python - 将字符串分配给 numpy.zeros 数组

python - 将带有值的按钮重定向到其他 django 模板/ View

Python 2.7 protobuf .py 文件生成问题

php - 推送通知没有失败但没有被发送

c++ - vector 转数组问题

python - 如何重复移动和填充列表中的元素以获得列表列表?

python - 如何使用单一 RGB 颜色过滤图像?