Pythonnumpy(Pythonnumpy数组)
python numpy有什么用
NumPy?is the fundamental package for scientific computing with?Python。就是科学计算包。
a powerful N-dimensional array object
sophisticated (broadcasting) functions
tools for integrating C/C++ and Fortran code
useful linear algebra, Fourier transform, and random number capabilities
一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
NumPy系统是Python的一种开源的数字扩展。这种工具可用来存储和处理矩阵,比Python自身的嵌套列表结构要高效。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。
Python—Numpy库的用法
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。
[('age', 'i1')]
[10 20 30]
[('abc', 21, 50.0), ('xyz', 18, 75.0)]
每个内建类型都有一个唯一定义它的字符代码:
[[1, 2] [3, 4] [5, 6]]
[[[ 0, 1, 2] [ 3, 4, 5] [ 6, 7, 8] [ 9, 10, 11]] [[12, 13, 14] [15, 16, 17] [18, 19, 20] [21, 22, 23]]]
[1 2 3]
[1 2 3]
[(1, 2, 3) (4, 5)]
原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
修改后的数组是: 0 5 10 15 20 25 30 35 40 45 50 55
原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
原始数组的转置是: [[ 0 20 40] [ 5 25 45] [10 30 50] [15 35 55]]
修改后的数组是: 0 5 10 15 20 25 30 35 40 45 50 55
C风格是横着顺序
F风格是竖着的顺序
原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
修改后的数组是: [[ 0 10 20 30] [ 40 50 60 70] [ 80 90 100 110]]
第一个数组: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]
第二个数组: [1 2 3 4]
修改后的数组是: 0:1 5:2 10:3 15:4 20:1 25:2 30:3 35:4 40:1 45:2 50:3 55:4
原始数组: [[0 1 2 3] [4 5 6 7]]
调用 flat 函数之后: 5
原数组: [[0 1 2 3] [4 5 6 7]]
展开的数组:默认是A [0 1 2 3 4 5 6 7]
以 F 风格顺序展开的数组: [0 4 1 5 2 6 3 7]
原数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
转置数组: [[ 0 4 8] [ 1 5 9] [ 2 6 10] [ 3 7 11]]
问一下Python里的numpy的正确读法是什么?
?numpy?读法是:英['n?mpi],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 numpy是什么库
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁),运行效率极好,是大量机器学习框架的基础库!
相关推荐:《Python基础教程》
NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括:
·一个强大的N维数组对象ndrray;
·比较成熟的(广播)函数库;
·用于整合C/C++和Fortran代码的工具包;
·实用的线性代数、傅里叶变换和随机数生成函数。
NumPy的优点:
·对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多;
·NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的;
·NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多。
当然,NumPy也有其不足之处,由于NumPy使用内存映射文件以达到最优的数据读写性能,而内存的大小限制了其对TB级大文件的处理;此外,NumPy数组的通用性不及Python提供的list容器。因此,在科学计算之外的领域,NumPy的优势也就不那么明显。
(Python)numpy 常用操作
不放回取样:
从列表ori中不放回地取n个数
通过这种操作,我们可以获得一个二维列表的子集:
(如果这个二维列表是图的邻接矩阵,那么就是对图进行随机采样,获得一个图的子图)
首先要注意,"+" 操作对于list和numpy.array是完全不同的
python 中的list,"+"代表拼接:
在numpy.array中,"+"代表矩阵相加
keepdim指的是维度不变,常在sum中使用。如:
会发现,keepdim之后还是二维的
这里要注意,pytorch和numpy里max()函数的返回值是不同的
pytorch:
也就是说,max(1)代表求第一维的最大值,对于二维数组来说,就是求纵向的最大值,然后,第一个返回值是最大值所形成数组,第二个返回值是最大值所在的索引。这一个技巧在机器学习的分类任务中很常用,比如我们的分类任务是把数据分成m类,那么最终我们模型的输出是m维的,对于n个样本就是n*m,如果要判断我们的模型最终的分类结果,就是找n个样本里,每个样本m维输出的最大值索引,代表样本是这个类的可能性最大。我们可以方便地用这种方式找到最大值地索引:
其中test_out是模型输出,predict_y则是分类结果
另外一点要注意的是,numpy与pytorch不同,numpy的max()只有一个返回值:
也就是说,numpy.max()不会返回最大值所在的索引
python关于numpy基础问题
Python发展至今,已经有越来越多的人使用python进行科学技术,NumPY是python中的一款高性能科学计算和数据分析的基础包。
ndarray
ndarray(以下简称数组)是numpy的数组对象,需要注意的是,它是同构的,也就是说其中的所有元素必须是相同的类型。其中每个数组都有一个shape和dtype。
shape既是数组的形状,比如
复制代码
1 import numpy as np
2 from numpy.random import randn
3
4 arr = randn(12).reshape(3, 4)
5
6 arr
7
8 [[ 0.98655235 1.20830283 -0.72135183 0.40292924]
9 [-0.05059849 -0.02714873 -0.62775486 0.83222997]
10 [-0.84826071 -0.29484606 -0.76984902 0.09025059]]
11
12 arr.shape
13 (3, 4)
复制代码
其中(3, 4)即代表arr是3行4列的数组,其中dtype为float64
一下函数可以用来创建数组
array将输入数据转换为ndarray,类型可制定也可默认
asarray将输入转换为ndarray
arange类似内置range
ones、ones_like根据形状创建一个全1的数组、后者可以复制其他数组的形状
zeros、zeros_like类似上面,全0
empty、empty_like创建新数组、只分配空间
eye、identity创建对角线为1的对角矩阵
数组的转置和轴对称
转置是多维数组的基本运算之一。可以使用.T属性或者transpose()来实现。.T就是进行轴对换而transpose则可以接收参数进行更丰富的变换
复制代码
arr = np.arange(6).reshape((2,3))
print arr
[[0 1 2]
[3 4 5]]
print arr.T
[[0 3]
[1 4]
[2 5]]
arr = np.arange(24).reshape((2,3,4))
print arr
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
print arr.transpose((0,1,2))
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
复制代码
数组的运算
大小相等的数组之间做任何算术运算都会将运算应用到元素级别。
复制代码
1 arr = np.arange(9).reshape(3, 3)
2 print arr
3
4 [[0 1 2]
5 [3 4 5]
6 [6 7 8]]
7
8 print arr*arr
9
10 [[ 0 1 4]
11 [ 9 16 25]
12 [36 49 64]]
13
14 print arr+arr
15
16 [[ 0 2 4]
17 [ 6 8 10]
18 [12 14 16]]
19
20 print arr*4
21
22 [[ 0 4 8]
23 [12 16 20]
24 [24 28 32]]
复制代码
numpy的简单计算中,ufunc通用函数是对数组中的数据执行元素级运算的函数。
如:
复制代码
arr = np.arange(6).reshape((2,3))
print arr
[[0 1 2]
[3 4 5]]
print np.square(arr)
[[ 0 1 4]
[ 9 16 25]]
复制代码
类似的有:abs,fabs,sqrt,square,exp,log,sign,ceil,floor,rint,modf,isnan,isfinite,isinf,cos,cosh,sin,sinh,tan,tanh,
add,subtract,multiply,power,mod,equal,等等