Автор оригинала: Team Python Pool.
Изучение функции numpy.ones в Python | np.ones
При выполнении какого-то проекта, требующего математических операций и вычислений, мы используем библиотеку numpy. В numpy у нас есть массивы NumPy, которые облегчают сложные математические и другие типы операций с большим количеством данных. Иногда нам нужно, чтобы наши массивы были заполнены только теми, которые входят в игру numpy.ones.
<Короче говоря, функция numpy.ones возвращает новый массив numpy, заполненный всеми единицами.
Нужда в numpy.ones
Большинство из вас пришли к этой статье, чтобы узнать, как использовать numpy.ones в python. Итак, я думаю, что вы все довольно много знаете о математике, поскольку numpy-это в основном математические операции с большими данными. Нам часто приходится заполнять нашу матрицу всеми единицами во время матричных операций в математике. Чтобы достичь этого в программировании на python без десятков строк кода, у нас есть специальная функция , присутствующая в библиотеке numpy. Эта функция поможет нам достичь нашей цели, создав идентификационную матрицу всего в двух строках. Эта функция называется numpy.ones().
Теперь я думаю, что вы, возможно, знаете важность функции numpy.ones (). Давайте посмотрим, как мы можем использовать и внедрять его в наши проекты.
Синтаксис np.ones
numpy.ones(shape,,,)
Параметры
Параметр | Обязательный/Необязательный | Описание |
форма | обязательный | Форма нового массива ex. (3, 2) |
dtype | необязательный | Тип данных массива по умолчанию float |
приказ | необязательный | Это дает нам свободу хранить многомерный массив в порядке строки-мажора (стиль C) или столбца-мажора (стиль Fortran) в памяти. По умолчанию это C (по строкам). |
любить | необязательный | Экспериментальная характеристика в ожидании принятия НЭПА 35. |
Возвращать
out: ndarray
функция numpy.ones() возвращает массив единиц с заданной формой, dtype и порядком.
Давайте рассмотрим работу функции numpy.ones() на нескольких качественных примерах.
Пример 1: Создание одномерного массива с помощью numpy.ones
import numpy as np .ones(5) print(one_d)
Выход:
[1. 1. 1. 1. 1.]
Объяснение:
В приведенном выше примере мы создали 1-d массив со всеми единицами в нем. Пример довольно прост. Во-первых, мы импортировали массив numpy как np. После этого мы непосредственно использовали функцию np.ones() для создания массива и передали ей параметр ‘5’. Таким образом, мы получим массив, в котором есть 5 элементов, и все они равны 1.
Примечание: Элементы имеют тип данных по умолчанию как float. Вот почему мы получаем 1. в массиве.
Пример 2: Создание двумерного массива с np.ones
import numpy as np .ones((3, 5)) print(two_d)
Выход:
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
Объяснение:
В примере 2 мы создали 2D-массив со всеми единицами с функцией numpy.ones. Этот пример очень похож на первый, который мы видели. Единственное различие здесь-это форма массива, так как нам нужно создать 2D-массив со всеми единицами в нем. Таким образом, мы позиционировали параметр np.ones как ‘(3, 5)’. Здесь количество строк будет равно 3, а количество столбцов-5.
Пример 2: Создание трехмерного (3D) массива с np.ones
import numpy as np .ones((3, 5, 7)) print(three_d)
Выход:
[[[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]]
[[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]]
[[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1.]]]
Объяснение:
Мы также можем создать 3D-массив со всеми единицами, используя функцию np.ones() в Python. Эти шаги очень похожи на первые два примера. Единственное различие заключается в параметре формы функции ones() . Здесь в аргументе shape мы поместили три значения, потому что нам нужно построить 3D-массив со всеми единицами в нем.
Здесь также мы не объявили параметр d-type. Таким образом, по умолчанию мы получим значение float в нашем результате.
Состоит из массива с различными типами данных с использованием метода numpy.ones()
В этом разделе урока мы рассмотрим, как можно создавать массивы, состоящие из всех массивов, имеющих разные типы данных. D-тип или тип данных метода numpy.ones может быть int, float, string и т. Д. Поэтому, не тратя больше времени, давайте сразу перейдем к примерам.
1. Создание массива с целочисленным типом данных с использованием np.ones()
import numpy as np .ones((3, 5),) print(array_int)
Выход:
[[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]
Объяснение:
В приведенном выше примере мы создали весь массив numpy с типом данных integer. Пример довольно прост. Но для начинающих, позвольте мне кратко объяснить это. Здесь мы импортировали массив numpy как функцию np.one(), доступную в библиотеке numpy. Мы уже видели работу numpy.ones() единственная дополнительная вещь, которую мы сделали здесь,-это добавление параметра d-типа. Мы сделали тип данных целочисленным. Таким образом, вы можете видеть вывод примера, который имеет тип integer, а не float.
2. Создание массива с типом данных string С помощью numpy.ones()
import numpy as np .ones((3, 5),) print(array_str)
Выход:
[['1' '1' '1' '1' '1']
['1' '1' '1' '1' '1']
['1' '1' '1' '1' '1']]
Объяснение:
Итак, в этом случае мы сгенерировали 2d массив numpy, заполненный всеми единицами, и тип данных этих массивов – string.Этот пример идентичен предыдущему. Здесь единственное изменение заключается в том, что вместо целого числа мы использовали ‘str’ в качестве аргумента в функции. Следовательно, мы получим массив numpy со строковым типом данных.
3. Включение массива со смешанным типом данных в виде кортежей с использованием numpy.ones()
import numpy as np .ones((3, 5), dtype=[('x', 'int'), ('y', 'float')]) print(array_tuple)
Выход:
[[(1, 1.) (1, 1.) (1, 1.) (1, 1.) (1, 1.)]
[(1, 1.) (1, 1.) (1, 1.) (1, 1.) (1, 1.)]
[(1, 1.) (1, 1.) (1, 1.) (1, 1.) (1, 1.)]]
Объяснение:
Мы можем указать элементы массива как кортеж и указать их типы данных.
Работа с параметром порядка функции numpy.ones
import numpy as np import time dimension = [2000, 2000] .ones(dimension,).ones(dimension,) print("We're performing an column operation on both the arrays to check the performance.") .time() np.cumsum(cstyle,) print("Time taken to perform column operation on C-style - ", time.time()-start) .time() np.cumsum(fortranstyle,) print("Time taken to perform column operation on Fortran-style - ", time.time()-start) print("\nWe're performing an row operation on both the arrays to check the performance.") .time() np.cumsum(cstyle,) print("Time taken to perform row operation on C-style - ", time.time()-start) .time() np.cumsum(fortranstyle,) print("Time taken to perform row operation on Fortran-style - ", time.time()-start)
Выход:
We're performing an column operation on both the arrays to check the performance.
Time taken to perform column operation on C-style - 0.07280611991882324
Time taken to perform column operation on Fortran-style -
0.028921842575073242
We're performing an row operation on both the arrays to check the performance.
Time taken to perform row operation on C-style - 0.026929855346679688
Time taken to perform row operation on Fortran-style - 0.0718083381652832
Объяснение:
Поскольку нет элементарной разницы между типом C и типом Fortran, нам нужно использовать операции для проверки этой разницы. В этом случае мы будем использовать np.cumsum() для вычисления суммы по операциям строк и по операциям столбцов. Затем мы проверим операции над обоими типами массивов и сделаем вывод.
Сначала мы объявили два массива numpy ones, используя различные параметры порядка. Затем мы будем использовать класс таймера python time.time (), чтобы получить время, затраченное на каждую операцию. time.time() – start даст нам точное количество времени, затраченного на операцию строки/столбца в np.cumsum().
Из выходных данных мы можем проверить, что операции со столбцами выполняются быстрее в массиве типа Fortran, а операции со строками-быстрее в типе C. Аналогично, мы можем использовать этот параметр порядка, чтобы сделать наши вычисления быстрее, если мы заранее знаем операции.
Numpy.ones Vs. Numpy.ones_like
Выход | [[1 1 1 1][1 1 1 1][1 1 1 1]] | |
Синтаксис | numpy.ones(форма,,) | numpy.ones_like(a,,,,) |
Возвращается | Возвращает новый массив заданной формы и типа, заполненный единицами. | Возвращает массив единиц той же формы и типа, что и данный массив. |
Пример | импорт numpy как)) | import numpy as.random.rand(4,5)print(two_d)print(np.ones_like(two_d,int)) |
Выход | [[1 1 1 1][1 1 1 1][1 1 1 1]] | [[0.04153551 0.65643199 0.32287169 0.60656863 0.52434272][0.58110881 0.47309099 0.38251042 0.86157837 0.22099276][0.60140397 0.62901982 0.51812488 0.0887905 0.78431815][0.85056633 0.93509825 0.20018143 0.06351918 0.40621227]][[1 1 1 1 1][1 1 1 1 1][1 1 1 1 1][1 1 1 1 1]] |
Резюме:
В этой статье мы узнали, как создать массив 1D, 2D и 3D numpy заданных форм и заполненных ими. Мы также видели, как мы можем играть с различными типами данных в функции numpy.ones и выбирать лучшее в соответствии с нашими потребностями. После этого мы узнали, как мы можем работать с недооцененным и типичным параметром ‘order’. Наконец, мы обладаем разницей между np.ones и numpy.ones_like.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Счастливого Пифонирования!