简体   繁体   English

如何迭代二维数组

[英]How to iterate 2D arrays

I was assigned a homework assignment on 2D arrays, but we didn't have time to go over them.我被分配了关于 2D 阵列的作业,但我们没有时间仔细研究它们。 If anyone can try to walk me through it that would be much appreciated or direct me to a helpful source.如果有人可以尝试引导我完成它,那将不胜感激或将我引导到有用的来源。 I am not even sure where to begin so anything helps.我什至不确定从哪里开始,所以任何事情都有帮助。 Also if you could possibly walk through the first one that would be helpful.此外,如果您可以通过第一个会有所帮助。 Thank you.谢谢你。

import numpy as np


def modify_2d_array(array):
    """
    Given a 2d numpy array iterate through the values and set the value equal to the row*column number

    :param array: 2d numpy array
    """
    pass


def sum_threshold_2d_array(array, threshold):
    """
    Iterate through each element of the 2d array using nested loops.
    Sum up the values that are greater than a threshold value given as an input parameter.

    :param array: a 2d array
    :param threshold: a threshold value (valid int or float)
    :return: sum total of values above the threshold
    """
    pass


def clipping_2d_array(array, threshold):
    """
    Iterate through each element of the 2d array using nested loops.
    Set the values greater than a threshold value equal to the threshold value given as an input parameter.

    (E.g. if the threshold is 1 and there is a value 1.5, set the value to 1 in the array)

    :param array: a 2d array
    :param threshold: a threshold value (valid int or float)
    """
    pass


def create_identity_matrix(n):
    """
    Create a nxn sized identity matrix. The return type should be a list or numpy ndarray

    For more info: https://en.wikipedia.org/wiki/Identity_matrix

    For this exercise you can use nested loops to construct your 2d array or find an applicable function in the numpy library.

    :param n:
    :return: nxn ndarray where the diagonal elements are 1 and nondiagonal elements are 0
    """

    pass


if __name__ == "__main__":
    my_example_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    print(sum_threshold_2d_array(my_example_array, 5))
    print(clipping_2d_array(my_example_array, 5))
    print(create_identity_matrix(5))

    # Modifies existing array
    modify_2d_array(my_example_array)
    print(my_example_array)

2D arrays are fairly simple to iterate, as a list of lists.二维数组作为列表的列表非常容易迭代。 A simple example on how to iterate:关于如何迭代的简单示例:

my_list = [[1,2,3],[4,5,6],[7,8,9]]
for each in my_list:
    # each is going to be equal to each list in my_list, so we can iterate over it with another, nested, for loop
    for each1 in each:
        # do what you want to do to each value
        # in this example, I'm just printing
        print(each1)

Something similar to this should allow you to iterate over most 2D lists.与此类似的东西应该允许您迭代大多数 2D 列表。

For more info, I suggest checking this out: https://www.geeksforgeeks.org/python-using-2d-arrays-lists-the-right-way/有关更多信息,我建议检查一下: https : //www.geeksforgeeks.org/python-using-2d-arrays-lists-the-right-way/

Just to add to Batcastle's answer, showing the iteration in the simplest way possible:只是为了添加到 Batcastle 的答案,以最简单的方式显示迭代:

You are basically selecting a list from a list and then selecting an item from that list, so if your array was:您基本上是从列表中选择一个列表,然后从该列表中选择一个项目,因此如果您的数组是:

array = [['a','b','c'],['d','e','f'],['g','h','i']]

Here's how you'd get values from it:以下是您从中获取值的方法:

# this would be equal to ['d','e','f']
x = array[1]

# this would be equal to 'h':
x = array[2][1]

# this would be equal to ['b','c']
x  = array[0][1:3]

Remember when iterating that it will always go from the first position up to but not including the last.请记住,在迭代时,它总是从第一个位置到但不包括最后一个位置。

Hope that helps希望有帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM