Добавление двух массивов с помощью цикла for - PullRequest
0 голосов
/ 25 сентября 2019
         from numpy import *
         arr1 = array([5,10,15,20,30])
         arr2 = array([55,16,1,280,60])
         arr3 = ([])
         k =0
         for num1 in arr1:
                num3 = num1 + arr2[k]
                arr3.append(num3)
                k +=1
         print(arr3)

что если у arr1 или arr2 больше индекса, как я могу это исправить.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Если массивы имеют неодинаковую длину, сначала необходимо выровнять участки одинаковой длины, выполнить операцию (например, сложение), а затем объединить оставшуюся часть более длинного массива (возможно, применяя другую операцию, но нев данном случае).

import numpy as np

arr1 = np.array([5,10,15,20,30])
arr2 = np.array([55,16,1,280,60, 70])  # Longer than arr1.

min_len = min(len(arr1), len(arr2))
longer_array = arr1 if len(arr1) > len(arr2) else arr2
partial_result = arr1[:min_len] + arr2[:min_len]
>>> np.concatenate((partial_result, longer_array[min_len:]))
array([ 60,  26,  16, 300,  90,  70])
0 голосов
/ 25 сентября 2019

Обычно плохой идеей является from package import *, поскольку вы можете переопределить другие пакеты в своем пространстве имен.У Numpy есть встроенное решение для добавления двух массивов:

import numpy as np
arr1 = np.array([5,10,15,20,30])
arr2 = np.array([55,16,1,280,60])
arr1+arr2

array([ 60, 26, 16, 300, 90]) # 435 ns ± 5.89 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Хотя вам нужно, чтобы два массива имели одинаковую длину.

Есливы хотите использовать некоторые стандартные функции Python (а не цикл for), вы можете использовать map и zip для обработки массивов, которые не имеют одинаковую длину:

list(map(sum, zip(arr1,arr2)))
[60, 26, 16, 300, 90] # 4.45 µs ± 60.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

Если вы хотите использовать цикл for, вы можете сделать это:

new_list = []
for i in range(min(len(arr1), len(arr2))):
    new_list.append(arr1[i]+arr2[i])
new_list

[60, 26, 16, 300, 90] # 2.71 µs ± 307 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) Все это предполагает, что вы хотите остановиться, когда достигнете конца кратчайшего списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...