`numpy.testing.assert_array_equal` не удается при сравнении структурированных массивов Numpy с полями массиваPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 `numpy.testing.assert_array_equal` не удается при сравнении структурированных массивов Numpy с полями массива

Сообщение Anonymous »

Я сравнивал некоторые данные с использованием numpy.testing.assert_array_equal . Данные были прочитаны из матового файла с использованием scipy.io.loadmat . Мат был сгенерирован следующим образом: < /p>

Код: Выделить всё

a = [1, 2; 3, 4];
b = struct('MyField', 10);
c = struct('MyField', [1, 2; 3, 4]);
save('example.mat', 'a', 'b', 'c');
Для тестирования я вручную сгенерировал ожидаемый массив Numpy, чтобы соответствовать тому, как scipy.io.loadmat выводит их:

Код: Выделить всё

import numpy as np
from numpy.testing import assert_array_equal
from scipy.io import loadmat

a = np.array([[1., 2.], [3., 4.]])
b = np.array([[(np.array(10.0),)]], dtype=[("MyField", "O")])
c = np.array(
[[
(np.array([[1., 2.], [3., 4.]]),)
]], dtype=[("MyField", "O")])

matdict = loadmat("example.mat", mat_dtype=True)

assert_array_equal(matdict["a"], a) # Passes
assert_array_equal(matdict["b"], b) # Passes
assert_array_equal(matdict["c"], c) # Fails
Это сравнение не удается только для переменной c , выбрасывая следующую ошибку:

Код: Выделить всё

Traceback (most recent call last):
File ".../python3.13/site-packages/numpy/testing/_private/utils.py", line 851, in assert_array_compare
val = comparison(x, y)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
...
File ".../python3.13/site-packages/numpy/testing/_private/utils.py", line 1057, in assert_array_equal
assert_array_compare(operator.__eq__, actual, desired, err_msg=err_msg,
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
verbose=verbose, header='Arrays are not equal',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
strict=strict)
^^^^^^^^^^^^^^
File ".../python3.13/site-packages/numpy/testing/_private/utils.py", line 929, in assert_array_compare
raise ValueError(msg)
ValueError:
error during assertion:

Traceback (most recent call last):
File ".../python3.13/site-packages/numpy/testing/_private/utils.py", line 851, in assert_array_compare
val = comparison(x, y)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Arrays are not equal
ACTUAL: array([[(array([[1., 2.],
[3., 4.]]),)]], dtype=[('MyField', 'O')])
DESIRED: array([[(array([[1., 2.],
[3., 4.]]),)]], dtype=[('MyField', 'O')])
Я первоначально подозревал, что проблема может быть связана с использованием структурированного массива Numpy или, возможно, объекта dtype. Однако я не слишком уверен в этом, так как тест сдал переменную b .
Я не знаю, почему он не работает только для этого конкретного случая, поскольку STDOUT выглядит визуально идентично. Я был бы очень признателен за некоторую помощь здесь о понимании основной проблемы здесь, а также объяснено правильным способом обработки таких сравнений.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/796 ... mpy-arrays
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»