标签分类
技术文章
当前位置:主页 > 计算机编程 > python > NumPy 数组使用大全

NumPy 数组使用知识点总结

  • 发布时间:
  • 作者:码农之家原创
  • 点击:89

NumPy 数组使用大全

这篇文章主要知识点是关于NumPy,数组,NumPy 数组使用大全,python中的numpy是什么 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python轻松学:爬虫、游戏与架站
  • 类型:Python编程大小:23.7 MB格式:PDF出版:清华大学出版社作者:王春艳
立即下载

更多相关的学习资源可以参阅 程序设计电子书Python电子书、等栏目。

NumPy 是一个Python 库,用于 Python 编程中的科学计算。在本教程中,你将学习如何在 NumPy 数组上以多种方式添加、删除、排序和操作元素。

NumPy 提供了一个多维数组对象和其他派生数组,例如掩码数组和掩码多维数组。

为什么要用 NumPy

NumPy 提供了一个 ndarray 对象,可以使用它来对任何维度的数组进行操作。 ndarray 代表 N 维数组,其中 N 是任意数字。这意味着 NumPy 数组可以是任何维度的。

与 Python 的 List 相比,NumPy 具有许多优势。我们可以在 NumPy 阵列上执行高性能操作,例如:

  1. 对数组成员进行排序
  2. 数学和逻辑运算
  3. 输入/输出功能
  4. 统计和线性代数运算

安装 NumPy

要安装NumPy,你的电脑上要先有 Python 和 Pip。

在终端中运行以下命令:

pip install numpy

然后你就可以在脚本中导入 NumPy 了,如下所示:

import numpy

添加数组元素

可以用 NumPy 模块的 append() 方法向 NumPy 数组中添加元素。

append() 的语法如下:

numpy.append(array, value, axis)

value 会被追加到在数组的末尾,并返回一个包含所有元素的 ndarray。

参数 axis 是一个可选的整数,用于定义数组的显示方式。如果没有指定,则数组结构将展平,稍后会演示用法。

以下示例,其中首先声明数组,然后用 append 方法向数组添加更多的值:

import numpy
a = numpy.array([1, 2, 3])
newArray = numpy.append (a, [10, 11, 12])
print(newArray)
# 输出:[ 1 2 3 10 11 12]

添加一列

也可以用NumPy 的 append() 方法插入一列。

在下面的例子中,我们创建了一个二维数组并插入了两列:

import numpy

a = numpy.array([[1, 2, 3], [4, 5, 6]]) 
b = numpy.array([[400], [800]])
newArray = numpy.append(a, b, axis = 1)
print(newArray)

"""
输出:
[[ 1  2  3 400]
 [ 4  5  6 800]]
"""

如果没有使用 axis 参数,则会输出:

[ 1 2 3 4 5 6 400 800]

这就是数组结构的扁平化。

在 NumPy 中,还可以用 insert() 方法插入元素或列。 两者之间的区别在于 insert() 方法可以指定要在哪个索引处添加元素,但 append() 方法会在数组的末尾添加一个值。

Consider the example below:

考虑以下示例:

import numpy
a = numpy.array([1, 2, 3])
newArray = numpy.insert(a, 1, 90) 
print(newArray)
# 输出:[ 1 90 2 3]

这里 insert() 方法在索引1处添加元素。在Python中数组索引从0开始。

追加一行

也可以用 append() 方法向数组添加行,就像在数组中附加元素一样简单:

import numpy
a = numpy.array([[1, 2, 3], [4, 5, 6]])
newArray = numpy.append(a, [[50, 60, 70]], axis = 0)
print(newArray)
"""
输出“
[[ 1 2 3]
 [ 4 5 6]
 [50 60 70]]
"""

删除元素

可以用 NumPy 模块的 delete() 方法删除 NumPy 数组元素:

import numpy 
a = numpy.array([1, 2, 3]) 
newArray = numpy.delete(a, 1, axis = 0) 
print(newArray)
# 输出:[1 3]

在本例子中,我们有一个一维数组,用 delete() 方法从数组中删除了索引 1 处的元素。

删除一行

同样,你也可以用 delete() 方法删除行。

下面的例子中我们从二维数组中删除了一行:

import numpy 
a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]]) 
newArray = numpy.delete(a, 1, axis = 0)
print(newArray)
"""
输出:
[[ 1 2 3]
 [10 20 30]]
"""

在 delete() 方法中,首先给出数组,然后给出要删除的元素的索引。在上例中,我们删除了索引为 1 的元素。

检查 NumPy 数组是否为空

可以用 size 方法返回数组中元素的总数。

在下面的例子中有一个 if 语句,通过 ndarray.size 检查数组中是否有元素,其中 ndarray 可以是任何给定的 NumPy 数组:

import numpy

a = numpy.array([1, 2, 3]) 
if(a.size == 0): 
  print("The given Array is empty") 
else: 
  print("The array = ", a)
# 输出:The array = [1 2 3]

在上面的代码中,数组中有三个元素,因此它不是空的,判断条件将返回false。如果数组中没有元素,则 if 条件会变为 true 并且将打印空消息。如果数组等于:

a = numpy.array([])

上述代码将会输出:

The given Array is empty

查找值的索引

要查找值对应的索引,可以用 NumPy 模块的 where() 方法,如下例所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
print("5 is found at index: ", numpy.where(a == 5))
# 输出:5 is found at index: (array([4]),)

如果你只想得到索引,可以这样写:

import numpy

a = numpy.array([1, 2, 3, 4, 5]) 
index = numpy.where(a == 5)
print("5 is found at index: ", index[0])
#输出: 5 is found at index: [4]

NumPy 数组切片

数组切片是从给定数组中提取子集的过程。你可以用冒号( : )运算符对数组进行切片,并指定数组索引的开始和结束位置,例如:

array[from:to]

下面的例子中提取从索引 2 到索引 5 的元素:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[2:5])
# 输出:A subset of array a = [3 4 5]

如果想要提取最后三个元素,可以通过用负切片来完成操作,如下所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[-3:])
# 输出:A subset of array a = [6 7 8]

将函数作用于所有数组元素

在下面的例子中,我们将创建一个 lambda 函数,并传入一个数组,以其应用于所有元素:

import numpy
addition = lambda x: x + 2
a = numpy.array([1, 2, 3, 4, 5, 6])
print("Array after addition function: ", addition(a))
# 输出:Array after addition function: [3 4 5 6 7 8] 

在此例中,创建了一个 lambda 函数,它使每个元素都递增 2。

NumPy 数组的长度

要得到 NumPy 数组的长度,可以用 size 属性,如下所示:

import numpy 
a = numpy.array([1, 2, 3, 4, 5, 6]) 
print("The size of array = ", a.size)
# 输出:The size of array = 6

从 list 创建 NumPy 数组

假设你有一个列表:

l = [1, 2, 3, 4, 5]

现在要根据这个列表创建一个数组,可以用 NumPy 模块的 array() 方法:

import numpy 
l = [1, 2, 3, 4, 5] 
a = numpy.array(l) 
print("The NumPy array from Python list = ", a)
# 输出:The NumPy array from Python list = [1 2 3 4 5]

同样,使用 array() 方法,也可以从元组创建 NumPy 数组。如下所示:

import numpy
t = (1, 2, 3, 4, 5) 
a = numpy.array(t) 
print("The NumPy array from Python Tuple = ", a)
# 输出:The NumPy array from Python Tuple = [1 2 3 4 5]

将 NumPy 数组转换为 list

要将数组转换为list,可以使用 NumPy 模块的 tolist()方法。

import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
print("Array to list = ", a.tolist())
# 输出:Array to list = [1, 2, 3, 4, 5]

在这段代码中,我们简单地调用了 tolist() 方法,该方法将数组转换为列表。然后将新创建的列表打印到输出屏幕。

把 NumPy 数组导出为 CSV

要将数组导出为 CSV 文件,可以用 NumPy 模块的 savetxt() 方法,如下所示:

import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
numpy.savetxt("myArray.csv", a)

此代码将在 Python 代码文件所在路径下生成 CSV 文件。当然你也可以指定路径。

该文件的内容如下:

1.000000000000000000e+00
2.000000000000000000e+00
3.000000000000000000e+00
4.000000000000000000e+00
5.000000000000000000e+00

你可以把额外填充的零删除,如下所示:

numpy.savetxt("myArray.csv", a,fmt='%.2f')

对 NumPy 数组排序

可以用 NumPy 模块的 sort() 方法对 NumPy 数组进行排序:

sort() 函数有一个可选参数 axis(整数),默认为 -1。axis 指定我们要对数组进行排序的轴。 -1 表示将根据最后一个轴对数组进行排序。

import numpy 
a = numpy.array([16, 3, 2, 6, 8, 10, 1]) 
print("Sorted array = ", numpy.sort(a))
# 输出:Sorted array = [ 1 2 3 6 8 10 16]

在这个例子中,我们在 print 语句中调用了 sort() 方法。数组 a 被传递给 sort 函数。

归一化数组

归一化数组是指将数组的值置于某个定义范围的过程。例如,我们想要在 -1 和 1 之间对数组进行归一化,依此类推。

归一化的公式如下:

x = (x – xmin) / (xmax – xmin)

现在把这个公式用于我们的数组。要查找数组中的最大和最小项,可以分别用 NumPy 的 max() 和 min() 方法。

import numpy 
x= numpy.array([400, 800, 200, 700, 1000, 2000, 300]) 
xmax = x.max() 
xmin = x.min() 
x = (x - xmin)/(xmax - xmin) 
print("After normalization array x = \n", x)
"""
输出:
After normalization array x =
 [0.11111111 0.33333333 0.     0.27777778 0.44444444 1.
 0.05555556]
"""

数组索引

索引指向数组中的一个元素。在下面的例子中,分别用到了一维和二维数组中的索引:

import numpy 
a = numpy.array([20, 13, 42, 86, 81, 9, 11]) 
print("Element at index 3 = ", a[3])
# 输出:Element at index 3 = 86

下面是二维数组:

import numpy 
a = numpy.array([[20, 13, 42], [86, 81, 9]]) 
print("Element at index a[1][2] = ", a[1][2])
# 输出:Element at index a[1][2] = 9

索引 [1][2] 表示第二行和第三列(索引从 0 开始)。因此在屏幕上输出 9 。

将 NumPy 数组附加到另​一个数组上

可以用 append() 方法将 NumPy 数组附加到另​​一个 NumPy 数组上。

import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
b = numpy.array([10, 20, 30, 40, 50]) 
newArray = numpy.append(a, b) 
print("The new array = ", newArray)
# 输出:The new array = [ 1 2 3 4 5 10 20 30 40 50]

在此例中,创建两个 NumPy 数组 a, b 。然后把两个数组传给 append()。当数组 b 作为第二个参数传递时,将被添加到数组 a 的末尾。

总结

正如大家所见,NumPy 数组用起来非常简单。在使用很多机器学习库时,NumPy 数组非常重要。可以说NumPy 是人工智能的大门。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

python中的numpy是什么

python中的numpy是什么

NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种例程,包括数学,逻辑,形状操作,排序,选择,I / O离散傅立叶变换,基本线性代数,基本统计运算,随机模拟等等。

NumPy包的核心是ndarray对象。这封装了同构数据类型的n维数组,许多操作在编译代码中执行以提高性能。NumPy数组和标准Python序列之间有几个重要的区别:

1、NumPy数组在创建时具有固定大小,与Python列表(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原始数组。

2、NumPy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。例外:可以有(Python,包括NumPy)对象的数组,从而允许不同大小的元素的数组。

3、NumPy数组有助于对大量数据进行高级数学和其他类型的操作。通常,与使用Python的内置序列相比,这些操作的执行效率更高,代码更少。

4、越来越多的基于Python的科学和数学软件包正在使用NumPy数组; 虽然这些通常支持Python序列输入,但它们在处理之前将这些输入转换为NumPy数组,并且它们通常输出NumPy数组。换句话说,为了有效地使用当今大量(甚至大多数)基于Python的科学/数学软件,只知道如何使用Python的内置序列类型是不够的 - 还需要知道如何使用NumPy数组。

以上就是python中的numpy是什么的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到spring+springmvc+mybatis整合注、 解决axios.interceptors.respon、 详解vue axios封装请求状态、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:python修改json文件的value实例方法

下一篇:Python list列表中删除多个重复元素的方法实例

展开 +

收起 -

学习笔记
网友NO.300390

numpy 对矩阵中Nan的处理:采用平均值的方法

尽管我们可以将所有的NaN替换成0,但是由于并不知道这些值的意义,所以这样做是个下策。如果它们是开氏温度,那么将它们置成0这种处理策略就太差劲了。 下面我们用平均值来代替缺失值,平均值根据那些非NaN得到。 from numpy import *datMat = mat([[1,2,3],[4,Nan,6]])numFeat = shape(datMat)[1]for i in range(numFeat): meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i]) #values that are not NaN (a number) datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal #set NaN values to mean 以上这篇numpy 对矩阵中Nan的处理:采用平均值的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.819879

使用NumPy和pandas对CSV文件进行写操作的实例

数组存储成CSV之类的区隔型文件: 下面代码给随机数生成器指定种子,并生成一个3*4的NumPy数组 将一个数组元素的值设为NaN: In [26]: import numpy as np In [27]: np.random.seed(42) In [28]: a = np.random.randn(3,4) In [29]: a[2][2] = np.nan In [30]: print(a) [[ 0.49671415 -0.1382643 0.64768854 1.52302986] [-0.23415337 -0.23413696 1.57921282 0.76743473] [-0.46947439 0.54256004 nan -0.46572975]] NumPy的savetxt()函数是与loadtxt()相对应的一个函数,它能以诸如CSV之类的区隔型文件格式保存数组: In [31]: np.savetxt('np.csv',a,fmt='%.2f',delimiter=',',header="#1,#2,#3,#4") 上面的函数调用中,我们规定了用以保存数组的文件的名称、数组、可选格式、间隔符和一个可选的标题 通过cat np.csv,可以查看刚才所建的np.csv文件的具体内容 利用随机数组来创建pandas DataFrame: In [38]: df = pd.DataFrame(a) In [39]: df Out[39]: 0 1 2 3 0 0.496714 -0.138264 0.647689 1.523030 1 -0.234153 -0.234137 1.579213 0.767435 2 -0.469474 0.542560 NaN -0.465730 pandas会自动替我们给数据取好列名 利用pandas的to_csv()方法可以为CSV文件生成一个DataFrame: In [40]: df.to_csv('pd.csv',float_format='%.2f',na_rep="NAN!") 对于这个方法,我们需要提供文件名、类似于NumPy的savetxt()函数的格式化参数的可选格式串和一个表示NaN的可选字符串 以上这篇使用NumPy和pandas对CSV文件进行写操作的实例就是小编分享给……

网友NO.898980

python+numpy实现的基本矩阵操作示例

本文实例讲述了python+numpy实现的基本矩阵操作。分享给大家供大家参考,具体如下: #! usr/bin/env python# coding: utf-8# 学习numpy中矩阵的代码笔记# 2018年05月29日15:43:40# 参考网站:http://cs231n.github.io/python-numpy-tutorial/import numpy as np#==================矩阵的创建,增删查改,索引,运算=================================##==================矩阵的创建,增删查改=================================## # 创建行向量# x = np.array([1,2,3])# # 修改某个值# x[0] = 0# 注意下标索引从0开始,与MATLAB不一样# print(x)# print(x.shape)# print(type(x))## # 创建二维与多维矩阵# matrix = np.array([[1,2,3],[1,2,3],[2,3,4]]) # 注意这里有一个小括号,小括号中还有一个中括号# # 取出某个元素# a1 = matrix[0][0]# print(a1)# print(matrix.shape)## # # 创建特殊矩阵# # 0矩阵# zeros = np.zeros((2,2))# 注意,这里有两个小括号,并且返回浮点型数据,而不是整形# print(zeros)## # 创建1矩阵# ones = np.ones([3,3])# 注意这里也是两个括号,其中里面的小括号也可是中括号,但是不建议使用# print(ones)## # 创建元素相同()的矩阵# full = np.full((2,3),2) #其中第一个括号表示矩阵大小,后面的数字表示填充的数字# print(full)## # 创建对角数为1的矩阵# diag = np.eye(3,3)#注意这里如果行列数不同,只会让行列下标相等的元素为1# print(diag)## # 创建随机矩阵(值在……

网友NO.549697

Python中numpy模块常见用法demo实例小结

本文实例总结了Python中numpy模块常见用法。分享给大家供大家参考,具体如下: import numpy as np arr = np.array([[1,2,3], [2,3,4]])print(arr)print(type(arr))print('number of dim:', arr.ndim)print('shape:', arr.shape)print('size:', arr.size) [[1 2 3] [2 3 4]] number of dim: 2 shape: (2, 3) size: 6 a32 = np.array([1,23,456], dtype=np.int)print(a32.dtype)a64 = np.array([1,23,456], dtype=np.int64)print(a64.dtype)f64 = np.array([1,23,456], dtype=np.float)print(f64.dtype) int32 int64 float64 z = np.zeros((3, 4))print(z)print(z.dtype)print()one = np.ones((3, 4), dtype=int)print(one)print(one.dtype)print()emt = np.empty((3, 4), dtype=int)print(emt)print(emt.dtype)print()ran = np.arange(12).reshape((3,4))print(ran)print(ran.dtype)print()li = np.linspace(1, 10, 6).reshape(2, 3)print(li)print(li.dtype) [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]] float64 [[1 1 1 1] [1 1 1 1] [1 1 1 1]] int32 [[ 0 1072693248 1717986918 1074161254] [ 1717986918 1074947686 -1717986918 1075419545] [ 1717986918 1075865190 0 1076101120]] int32 [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] int32 [[ 1. 2.8 4.6] [ 6.4 8.2 10. ]] float64 a = np.array([10,20,30,40])b = np.arange(4)print(a)print(b)print()print(a+b)print(a-b)print(a*b)print()print(a**b)print()print(10*np.sin(a))print()print(b3)print() [10 20 30 40] [0 1 2 3] [10 21 32 43] [10 19 28 37] [ 0 20 60 120] [ 1 20 900 64000] [-5.44021111 9.12945251 -9.88031624 7.4511316 ] [ True True True False] a = np.array([[1,2], [3,4]])b = np.arange(4)……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明