2015-06-19 1 views
0

Я должен написать функцию, которая принимает 3 аргумента: Матрица 1, Матрица 2 и число p. Функции выводят количество записей, в которых разница между матрицей 1 и матрицей 2 больше, чем p. Мне было поручено не использовать петли.Поиск количества значений, которые удовлетворяют чему-либо в матрице, без использования циклов. Python

Мне было рекомендовано использовать функцию X.sum(), где X является ndarray.

Я не знаю, что делать здесь.

Первое, что я хочу сделать, это вычесть M2 из M1. Теперь у меня есть записи, одна из которых или не больше p.

Я попытался найти способ для нас использовать функцию sum, но я боюсь, что не могу понять, как это может мне помочь.

Единственное, о чем я могу думать, это пройти через записи, которые мне не разрешены. Буду признателен, что вы помогаете в этом. Рекурсия не допускается.

+1

Пожалуйста, переформатируйте свой вопрос, имея некоторые новые символы/пробелы, помогает в удобочитаемости. Кроме того, код (например, 'X.sub()') был бы лучше между backticks ('\' ') – Wolph

+1

Является ли это логической проблемой? Потому что это звучит как один. – honi

+1

Как бы вы это сделали, если матрицы 1 и 2 были только одиночными целыми числами? Если вы будете использовать 'if', как бы вы его избежали? (Обратите внимание, что логические значения могут быть непосредственно преобразованы в целые числа.) Как только вы знаете, как это сделать для одиночных чисел, посмотрите, можете ли вы транслировать операции, используемые во всех массивах. – user2357112

ответ

1
import pandas as pd 
# Pick value of P 
p = 20 
# Instantiate fake frames 
a = pd.DataFrame({'foo':[4, 10], 'bar':[34, -12]}) 
b = pd.DataFrame({'foo':[64, 0], 'bar':[21, 354]}) 
# Get absolute value of difference 
c = (b - a).applymap(abs) 
# Boolean slice, then sum along each axis to get total number of "True"s 
c.applymap(lambda x: x > p).sum().sum() 
Смежные вопросы