NumPy: создание пустой матрицы

Но вначале я хочу инициировать пустой массив mass. То есть пустую матрицу numpy, а потом я к ней добавлю много элементов. Как мне инициировать пустой массив mass?
Я решил задачу следующим образом: создал ненужную первую запись:
mass=np.array([['Flower', 0.0]])
Но, это, очевидно не лучшее решение, потому что мне потом придётся удалять этот ‘Flower’. Хочу иметь первую пустую запись.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Матрицы в NumPy
Есть матрицы А и В. Нужно все элементы каждой строки умножить на соответствующий элемент матрицы В.

Python, numpy, матрицы
Подскажите пожалуйста, есть ли способ найти побочную диагональ и параллельные ей диагонали в.

NumPy Замена элементов Матрицы
Реализуйте функцию, которая во входной вещественной матрице X находит все значения np.nan и.
Numpy вывод матрицы с заданными значениями
Здравствуйте, есть задача, часть которой я не понимаю как реализовать. Прошу помощи. Условие.
Numpy посмотреть значения матрицы полностью
Как вывести numpy матрицу так, чтобы значения элементов можно было нормально увидеть. Получаю: .
Заблокирован
Руководства почитать не судьба?
np.zeros((3, 5))
Регистрация: 14.11.2016
Сообщений: 53
Возможно, Вам надо ещё раз посмотреть в это руководство — это же для Вас просто:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Эта ошибка, если написать так, как вы посоветовали.
Traceback (most recent call last):
File «test2.py», line 222, in
mass = np.append(mass, [[name, value]], axis=0)
File «Miniconda\lib\site-packages\numpy\lib\function_base.py», line 4586, in append
return concatenate((arr, values), axis=axis)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
636 / 476 / 179
Регистрация: 28.05.2012
Сообщений: 1,414
Сообщение от vjg2017 
Эта ошибка, если написать так, как вы посоветовали.
все вам правильно посоветовали
np.zeros((3, 5))
тут нет ошибки
Регистрация: 14.11.2016
Сообщений: 53
1 2 3 4 5 6 7
import numpy as np mass = np.array([['Flower', 0.0]]) mass = np.append(mass, [['Car', 0.234]], axis=0) mass = np.append(mass, [['Apple', 12.345]], axis=0) print(mass)
Этот вариант работает:
output:
[[‘Flower’ ‘0.0’]
[‘Car’ ‘0.234’]
[‘Apple’ ‘12.345’]]
А Ваш вариант не работает.
1 2 3 4 5 6 7 8
import numpy as np #mass = np.array([['Flower', 0.0]]) mass = np.zeros((3,5)) mass = np.append(mass, [['Car', 0.234]], axis=0) mass = np.append(mass, [['Apple', 12.345]], axis=0) print(mass)
output:
Traceback (most recent call last):
File «12.py», line 6, in
mass = np.append(mass, [[‘Car’, 0.234]], axis=0)
File «Miniconda\lib\site-packages\numpy\lib\function_base.py», line 4586, in append
return concatenate((arr, values), axis=axis)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Добавлено через 15 минут
Сообщение от Vigi 
все вам правильно посоветовали
np.zeros((3, 5))
тут нет ошибки
Вы мой пример у себя в компиляторе запускали? У Вас программа завершается верно и без ошибок?
636 / 476 / 179
Регистрация: 28.05.2012
Сообщений: 1,414

Сообщение было отмечено vjg2017 как решение
Решение
Регистрация: 14.11.2016
Сообщений: 53
Правильно, спасибо за ответ. Но у вас не
np.zeros((3, 5))
np.zeros((0, 2))
Тем не менее спасибо за ответ. Не знал, что можно использовать цифру ноль для задании пустого массива.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Среднее значение в каждой строке матрицы, NumPy
Дана матрица А. Нужно сформировать новую матрицу, в которой будет 15 строк, и в каждой строке будет.

Вычисление в numpy собственных чисел и векторов матрицы
Добрый день! Есть задача найти собственные числа и собственные вектора матрицы на питоне. Для.

Найти детерминант квадратной матрицы без numpy.linalg.det
также нельзя использовать никакие функции связаные из numpy. я попытался сделать это таким.
Создание двумерного массива ( numpy)
Создать с помощью пакета numpy двумерный массив по варианту задания. Все массивы в вариантах.

numpy и матрицы
Задание на тему работы с массивами и пакетом numpy: 1) Создайте двумерный массив 4 х 5. 2).

Numpy. Диагональ матрицы
Доброго времени суток, уважаемые форумчане! Начал изучать Numpy, и возникли трудности с.
Или воспользуйтесь поиском по форуму:
Как создать пустой и полный массив NumPy?
В этом уроке мы научимся создавать пустой и полный массив NumPy. NumPy означает числовой Python. Это библиотека Python, которая выполняет числовые вычисления. Он предоставляет объект многомерного массива. NumPy — популярная библиотека Python, используемая для работы с массивами. Он также имеет функции для работы в области линейной алгебры, сортировки и матриц и оптимизирован для работы с новейшими архитектурами ЦП.
NumPy очень быстр, поскольку написан на языке C, что делает его более эффективным для создания массивов. Массив представляет собой коллекцию элементов одного типа данных, хранящихся в памяти. К концу этого урока мы сможем научиться создавать как пустой, так и полный массив.
Синтаксис
Это синтаксис для создания полного массива и пустого массива.
numpy.full(order of array, fill_value, dtype = None) numpy.empty(order of array, dtype = None,)
В этом синтаксисе мы использовали «numpy.full()» для создания полного массива и «numpy.empty()» для создания пустого массива. Порядок параметра массива представляет форму массива. Параметр fill_value и dtype не является обязательным. Fill_value может быть масштабатором или массивом, который будет присвоен массиву. Dtype показывает тип данных массива.
Пример 1
Вот пример, в котором мы использовали функцию np.empty() для создания пустого массива, а затем установили порядок массива 2*3. А затем мы показали массив с помощью функции print().
import numpy as np arr_empty = np.empty((2, 3)) print(arr_empty)
Выход
[[6.93167257e-310 6.93171505e-310 6.93167256e-310] [6.93167256e-310 6.93167256e-310 6.93167256e-310]]
Пример 2
В этом примере, в котором мы использовали функцию np.full() для создания массива, мы установили порядок массива 3*3. Затем мы заполнили значение 5. Наконец, мы отобразили массив с помощью функции print().
import numpy as np arr_full = np.full((3, 3), 5) print(arr_full)
Выход
[[5 5 5] [5 5 5] [5 5 5]]
Пример 3
В этом примере мы устанавливаем порядок массива 5*5, а затем устанавливаем тип данных «int», чтобы создать пустой целочисленный массив. Тогда как в полном массиве мы установили значение 7, а затем показали массив целочисленных значений.
import numpy as np arr_empty = np.empty((5, 5), dtype=int) print("Empty Array") print(arr_empty) arr_full = np.full([5, 5], 7, dtype=int) print("\n Full Array") print(arr_full)
Выход
Empty Array [[4607182418800017408 4607182418800017408 4607182418800017408 4607182418800017408 4607182418800017408] [4607182418800017408 4607182418800017408 4607182418800017408 4607182418800017408 4607182418800017408] [4607182418800017408 4607182418800017408 4607182418800017408 4607182418800017408 4607182418800017408] [4607182418800017408 4617315517961601024 4617315517961601024 4621819117588971520 4621819117588971520] [4632233691727265792 4636737291354636288 4641240890982006784 4645744490609377280 4650248090236747776]] Full Array [[7 7 7 7 7] [7 7 7 7 7] [7 7 7 7 7] [7 7 7 7 7] [7 7 7 7 7]]
Пример 4
В этом примере мы устанавливаем порядок массива 4*4, а затем устанавливаем тип данных с плавающей запятой, чтобы создать пустой массив с плавающей запятой. Тогда как в полном массиве мы установили значение 6,34, а затем показали массив плавающих значений.
import numpy as np arr_empty = np.empty((4, 4), dtype=float) print("Empty Array") print(arr_empty) arr_full = np.full([4, 4], 6.34, dtype=float) print("\n Full Array") print(arr_full)
Выход
Empty Array [[ 1. -0.11756978 0.87175378 0.81794113] [-0.11756978 1. -0.4284401 -0.36612593] [ 0.87175378 -0.4284401 1. 0.96286543] [ 0.81794113 -0.36612593 0.96286543 1. ]] Full Array [[6.34 6.34 6.34 6.34] [6.34 6.34 6.34 6.34] [6.34 6.34 6.34 6.34] [6.34 6.34 6.34 6.34]]
Заключение
Мы научились использовать NumPy для создания массивов. NumPy — известная библиотека для создания массивов. Работа с NumPy также включает в себя простые в использовании функции для математических вычислений над набором данных массива. Он имеет несколько модулей для выполнения основных и специальных математических функций в NumPy. Мы также можем объединить несколько библиотек с NumPy для улучшения массивов. В заключение отметим, что NumPy очень эффективен и быстр для создания массивов; разработчики могут дополнительно настроить его для конкретных целей.
Все права защищены. © Linux-Console.net • 2019-2024
Создание пустого массива NumPy и постепенное его заполнение
На данный момент программа постепенно записывает в пустой список большой объём данных. Делает примерно так:
import time # Создаю пустые списки z_gyro_row = [] collect_time_row = [] START_TIME = time.time() # В цикле по определённому условию считываю данные с датчика # И постепенно заполняю пустые списки while flag: collect_time = time.time() - START_TIME # Фиксируем отрезок времени collect_time_row.append(collect_time) # Запись времени в список z_gyro_32 = gyro_out32(z_gyro_32) # Считываю значение с датчика z_gyro_row.append(z_gyro_32) # Запись значений в список
На один из моих вопросов, мне посоветовали для большого объёма данных использовать массивы NumPy. Сейчас я это попытался сделать, но как я понимаю их невозможно так же как и списки постепенно заполнять данными с помощью команды .append. Попытался так, но не вышло:
import numpy as np my_array = np.array([], 'float64') np.append(my_array, 10)
Возможно только преобразовать list в numpy.ndarray. В связи с этим возникает вопрос как оптимально использовать массивы NumPy, чтобы тратить как можно меньше времени и ресурсов на запись/хранение/обработку данных?
Отслеживать
задан 2 мар 2021 в 11:45
387 1 1 золотой знак 4 4 серебряных знака 13 13 бронзовых знаков
my_array = np.append(my_array, 10)
2 мар 2021 в 12:06
@strawdog Спасибо, всё работает!
2 мар 2021 в 12:08
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Если данных не очень много (не миллионы значений), то вам вообще не имеет смысла мучиться с Numpy . Я потестил ради интереса, создал пустой список из добавил к нему по одному 1 000 000 (миллион) элементов. На это у питона ушло 100 миллисекунд.
Если такая скорость для вас мала, то тогда нужно выделять массив Numpy , например, с помощью np.empty заведомо большего размера, чем вам может понадобится, и заполнять его, обращаясь к элементам по индексу. Но это не так удобно, как работать со списком.
А ещё в питоне есть разные виды очередей, например, очень удобная collections.deque , которую можно читать и писать с обоих концов. Если вы то пишете в список, то читаете из него вперемешку, то использовать очередь ещё проще и удобнее, чем список. Опять же на примере миллиона элементов создание очереди путём добавления элементов с конца и с начала по очереди, а потом полное опустошение очереди опять же забиранием элементов с конца и с начала по очереди заняло чуть больше тех же 100 миллисекунд. Очень рекомендую очередь — весьма удобная коллекция.
Отслеживать
ответ дан 2 мар 2021 в 12:49
69.7k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
В принципе, вы правы. Вся прелесть numpy проявляется не тогда, когда вы массив создаете, а когда начинаете с ним работать. Вот тогда — и обработка может оказаться на много быстрее чем в списке, код проще и убодочитаемее — ибо без циклов и пр. заморочек. С датчиков же мы что-то снимаем для дальнейшего анализа или хотя-бы визуализации. А если просто «прочитал — добавил» — то можно и без numpy забивать память, пока не произойдет переполнение.
2 мар 2021 в 13:01
@passant Ну да, поскольку сценарий использования автором описан не целиком, сложновато гадать. Но судя по тому, как он пытается использовать numpy , скорее всего тут речь не идёт о векторной/матричной обработке данных, при которой numpy смог бы раскрыться.
2 мар 2021 в 13:02
@CrazyElf Данные после чтения мне необходимо обрабатывать. Сама математика не сложная, но всё равно присутствует. И графики также необходимо строить, поэтому всё таки воспользуюсь советом и буду использовать numpy . Спасибо всем за советы!)
2 мар 2021 в 13:10
Отличная идея с очередями — они здесь архитектурно лучше всего подходят, по-моему
2 мар 2021 в 14:09
Да, массивы — неизменяемый (не расширяемый) тип данных. Это цена за скорость работы. Вообще-то ничего нового и страшного: классические массивы в том-же С++ именно так и работают. Уже десятки лет. И еще столько-же будут использоваться и работать.
Теперь что делать. Самое худшее из возможных решений — работать с ними как со списками, т.е. порождать пустым, а потом добавлять по мере необходимости по одному элементу. Разумный путь — определить максимально возможное (в будущем) количество элементов в массиве, порождать массив именно такого размера, а потом заполнять его элементы по мере их появления. Промежуточный путь — породить массив большого (достаточного на первое время функционирования) размера, после исчерпания — добавлять новый фрагмент (опять — не на один элемент, конечно).
Поскольку у вас работа идет — мне так кажется — с датчиками, то у вас еще меньше проблем должно возникнуть, если конечно архитектуру приложения разработать нормально. В таких приложениях — нет необходимости хранить информацию бесконечно долго. Более того, есть такое понятие — окно наблюдения. По сути, сколько данных вы обрабатываете. И это окно как правило коненчо. Вот и создавайте массив соответствующего размера. Или два таких массива — один заполняется, данные из второго — обрабатываются. Кстати — заполнять можно действительно через список, который по только факту полного заполнения преобразуется в массив. Потом массивы меняются местами — второй наполняется, первый обрабатывается. Но архитектуру конечно надо при этом делать не спонтанно-интуитивно.
Матрицы в Python и массивы NumPy
Матрица — это двухмерная структура данных, в которой числа расположены в виде строк и столбцов. Например:

Эта матрица является матрицей три на четыре, потому что она состоит из 3 строк и 4 столбцов.
Обновлено: 2023-06-17 20:46:41 Вадим Дворников автор материала
Матрицы в Python
Python не имеет встроенного типа данных для матриц. Но можно рассматривать список как матрицу. Например:
A = [[1, 4, 5], [-5, 8, 9]]
Этот список является матрицей на 2 строки и 3 столбца.

Обязательно ознакомьтесь с документацией по спискам Python, прежде чем продолжить читать эту статью.
Давайте посмотрим, как работать с вложенным списком.
A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A =", A) print("A[1] =", A[1]) # вторая строка print("A[1][2] =", A[1][2]) # третий элемент второй строки print("A[0][-1] =", A[0][-1]) # последний элемент первой строки column = []; # пустой список for row in A: column.append(row[2]) print("3rd column 1" data-ab-test="post_related" data-ab-key="yarpp">Как работают массивы в Python?