Добавление массива к массиву python

Python How to make array in array?

I have a numpy array Z1, Z2, Z3:
Z1 = [1,2,3]
Z2 = [4,5]
Z3 = [6,7,8,9]
I want new numpy array Z that have Z1, Z2, Z3 as array like:
Z = [[1,2,3],[4,5],[6,7,8,9]
print(type(Z),type(Z[0]))
>>>
I used np.append, hstack, vstack, insert, concatenate . but all I failed.
There is only 2 case:
Z = [1,2,3,4,5,6,7,8,9]
or ERROR
so I made a list Z first, and append list Z1, Z2, Z3 and then convert list Z into numpy array Z.
BUT
Z = [[1,2,3],[4,5],[6,7,8,9]]
print(type(Z),type(Z[0]))
>>> I want to do not use ‘while’ or ‘for’. Help me please..

4 Answers 4

import numpy as np Z1 = [1,2,3] Z2 = [4,5] Z3 = [6,7,8,9] Z = np.array([Z1, Z2, Z3]) print(Z) print(type(Z)) 

This will convert your list of lists into an numpy array

That’s just an array of Python objects though: note that type(Z[0]) returns . So you might as well just use a plain Python list of lists. Numpy’s fast array manipulations only work on arrays whose base items are native data types, not Python objects.

First, Z is a list of lists:

This is an array of lists — note the dtype. But keep in mind that np.array([[1,2,3],[4,5,6]]) will produce a 2d array of dtype int.

In [34]: np.array(Z) Out[34]: array([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=object) 

The surest way of creating an array of object dtype, and given shape is to initialize it, and then fill it:

In [35]: out = np.zeros((3,), dtype=object) In [36]: out[. ] = Z In [37]: out Out[37]: array([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=object) 

Again this is an array of lists. To make an array of arrays, we first have to make a list of arrays:

In [38]: out[. ] = [np.array(x) for x in Z] In [39]: out Out[39]: array([array([1, 2, 3]), array([4, 5]), array([6, 7, 8, 9])], dtype=object) 

Object arrays are awkward beasts, not quite lists and not quite (regular) arrays.

Источник

Массивы Python

Основы

В Питоне нет структуры данных, полностью соответствующей массиву. Однако, есть списки, которые являются их надмножеством, то есть это те же массивы, но с расширенным функционалом. Эти структуры удобнее в использовании, но цена такого удобства, как всегда, производительность и потребляемые ресурсы. И массив, и список – это упорядоченные коллекции, но разница между ними заключается в том, что классический массив должен содержать элементы только одного типа, а список Python может содержать любые элементы.

shapito_list = [1, 'qwerty', 4/3, [345, ['a', ]]] print(shapito_list) # Вывод: [1, 'qwerty', 1.3333333333333333, [345, ['a', ]]]

Создание массива

Существует несколько способ создать массив. Ниже приведены примеры как это можно сделать.

можно_так = [1, 2, 3, 4, 5] можно_так_2 = list('итерируемый объект') а_можно_и_так = [i for i in range(5)] print('можно_так:', можно_так) print('можно_так_2:', можно_так_2) print('а_можно_и_так:', а_можно_и_так) print('можно_так[0]:', можно_так[0]) print('а_можно_и_так[3]:', а_можно_и_так[3]) # Вывод: можно_так: [1, 2, 3, 4, 5] можно_так_2: ['и', 'т', 'е', 'р', 'и', 'р', 'у', 'е', 'м', 'ы', 'й', ' ', 'о', 'б', 'ъ', 'е', 'к', 'т'] а_можно_и_так: [0, 1, 2, 3, 4] можно_так[0]: 1 а_можно_и_так[3]: 3

Многомерный массив

Двухмерный массив в Python можно объявить следующим образом.

example_array = [[-1, 0, 0, 1], [2, 3, 5, 8]] print(example_array[0]) print(example_array[1]) print(example_array[0][3]) # Вывод: [-1, 0, 0, 1] [2, 3, 5, 8] 1
example_array = [[[-1, 0], [0, 1]], [[2, 3], [5, 8]]] print(example_array[0]) print(example_array[1]) print(example_array[0][1]) print(example_array[0][1][0]) # Вывод: [[-1, 0], [0, 1]] [[2, 3], [5, 8]] [0, 1] 0

Операции с массивами

Давайте теперь рассмотрим операции, которые Пайтон позволяет выполнять над массивами.

Обход массива с использованием цикла for

Мы можем использовать цикл for для обхода элементов массива.

example_array = [1, 2, 3] for i in range(len(example_array)): print(example_array[i]) # Вывод: 1 2 3

Здесь представлен подход, свойственный большинству языков программирования. В Python же есть свой, более удобный вариант.

example_array = [1, 2, 3] for i in example_array: print(i) # Вывод: 1 2 3

Обход многомерного массива

Для того чтоб получить элементы многомерного массива придётся использовать вложенные циклы.

example_array = [[1, 2], [3, 4]] for i in example_array: for x in i: print(x) # Вывод: 1 2 3 4

Добавление

Мы можем использовать функцию insert() для вставки элемента по указанному индексу. Элементы из указанного индекса сдвигаются вправо на одну позицию.

example_array = [[1, 2], [3, 4]] example_array.insert(0, -1) example_array.insert(2, [-1, 13, 64]) print(example_array) # Вывод: [-1, [1, 2], [-1, 13, 64], [3, 4]]
example_array = [[1, 2], [3, 4]] example_array.append(-1) example_array.append([-1, 13, 64]) print(example_array) # Вывод: [[1, 2], [3, 4], -1, [-1, 13, 64]]
example_array = [1, 2, 3, 4] example_array.extend([5, 6]) print(example_array) # Вывод: [1, 2, 3, 4, 5, 6]

Определение размера

Используйте метод len() чтобы вернуть длину массива (число элементов массива).
Не стоит путать размер массива с его размерностью!

example_array = [[1, 2], [3, 4]] print('Размер массива:', len(example_array)) example_array.append(-1) print('Размер массива:', len(example_array)) example_array.append([-1, 13, 64]) print('Размер массива:', len(example_array)) # Вывод: Размер массива: 2 Размер массива: 3 Размер массива: 4

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

example_array = [[1, 2], [3, 4]] print('Равна ли длина массива номеру последнего элемента + 1?', len(example_array) is (example_array.index(example_array[-1]) + 1)) example_array.append(-1) print('Увеличили размер массива.') print('Равна ли теперь длина массива номеру последнего элемента + 1?', len(example_array) is (example_array.index(example_array[-1]) + 1)) # Вывод: Равна ли длина массива номеру последнего элемента + 1? True Увеличили размер массива. Равна ли теперь длина массива номеру последнего элемента + 1? True

Небольшое пояснение: метод списка .index() возвращает индекс элемента, значение которого совпадает с тем, которое передали методу. Здесь мы передаём значение последнего элемента и, таким образом, получаем индекс последнего элемента. Будьте осторожны: если в списке есть повторяющиеся значения, этот приём не сработает!

Срез

Срез Python предоставляет особый способ создания массива из другого массива.

example_array = [[1, 2], [3, 4]] print(example_array[::-1]) print(example_array[1:]) print(example_array[0][:-1]) # Вывод: [[3, 4], [1, 2]] [[3, 4]] [1]

Функция pop

В Python удалить ненужные элементы из массива можно при помощи метода pop, аргументом которого является индекс ячейки. Как и в случае с добавлением нового элемента, метод необходимо вызвать через ранее созданный объект.

example_array = [1, 2, 6, 3, 4] print(example_array.pop(4)) print(example_array) # Вывод: 4 [1, 2, 6, 3]

После выполнения данной операции содержимое массива сдвигается так, чтобы количество доступных ячеек памяти совпадало с текущим количеством элементов.

Методы массива

В Python есть набор встроенных методов, которые вы можете использовать при работе с list.

Метод Значение
append() Добавляет элементы в конец списка
clear() Удаляет все элементы в списке
copy() Возвращает копию списка
count() Возвращает число элементов с определенным значением
extend() Добавляет элементы списка в конец текущего списка
index() Возвращает индекс первого элемента с определенным значением
insert() Добавляет элемент в определенную позицию
pop() Удаляет элемент по индексу
remove() Убирает элементы по значению
reverse() Разворачивает порядок в списке
sort() Сортирует список

Модуль array

Если Вам всё-таки нужен именно классический массив, вы можете использовать встроенный модуль array. Он почти не отличается от структуры list, за исключением, пожалуй, объявления.
Вот небольшая демонстрация:

import array example_array = array.array('i', [1, 2, 6, 3, 4]) # превый аргумент указывает на тип элементов. i означает integer example_array.insert(0, -1) print('После вставки:', example_array) example_array.append(-1) print('После добавления в конец:', example_array) example_array.extend([5, 6]) print('После объединения со списком:', example_array) print('Удалён элемент:', example_array.pop(4)) print('После удаления элемента:', example_array) print('Срез:', example_array[0:4]) # Вывод: После вставки: array('i', [-1, 1, 2, 6, 3, 4]) После добавления в конец: array('i', [-1, 1, 2, 6, 3, 4, -1]) После объединения со списком: array('i', [-1, 1, 2, 6, 3, 4, -1, 5, 6]) Удалён элемент: 3 После удаления элемента: array('i', [-1, 1, 2, 6, 4, -1, 5, 6]) Срез: array('i', [-1, 1, 2, 6])

Типы элементов массива

Элементы массива в модуле array могут быть следующих типов:

Код типа Тип в C Тип в python
‘b’ signed char int
‘B’ unsigned char int
‘h’ signed short int
‘H’ unsigned short int
‘i’ signed int int
‘I’ unsigned int int
‘l’ signed long int
‘L’ unsigned long int
‘q’ signed long long int
‘Q’ unsigned long long int
‘f’ float float
‘d’ double float

Как Вы можете видеть, со строками модуль не работает.

Источник

Appending two arrays together in Python

I've been working in Python with an array which contains a one-dimensional list of values. I have until now been using the array.append(value) function to add values to the array one at a time. Now, I would like to add all the values from another array to the main array instead. In other words I don't want to add single values one at a time. The secondary array collects ten values, and when these are collected, they are all transfered to the main array. The problem is, I can't simply use the code 'array.append(other_array)', as I get the following error:

unsupported operand type(s) for +: 'int' and 'list' 

4 Answers 4

Lists can be added together:

>>> a = [1,2,3,4] >>> b = [5,6,7,8] >>> a+b [1, 2, 3, 4, 5, 6, 7, 8] 

and one can be easily added to the end of another:

You are looking for array.extend() method. append() only appends a single element to the array.

Array (as in numpy.array or array module) or list ? Because given your error message, it seems the later.

Anyway, you can use the += operator, that should be overridden for most container types, but the operands must be of the same (compound) type.

Usually, if you want to expand a structure to the right ( axis=1 ) or at the bottom ( axis=0 ), you should have a look at the numpy.concatenate() function, see Concatenate a NumPy array to another NumPy array.

np.concatenate(arr1, arr2, axis=0) 

is probably what is needed here, adding a new row in a nested array.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.25.43544

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Читайте также:  Php find domain controller
Оцените статью