python Numpy库与多维数组

前提:

在python内置环境中,直接存储的数组(array)对象只存在一维结构,无法支持多维结构,也没有相关数组运算函数。

高维数组:Numpy库的核心
  • ndarray对象
    数组类型的对象大小固定,数组内元素的数据类型相同。
创建数组
  1. 首先导入NumPy包
	import numpy as np

2.array()函数创建多维数组

array1 = np.array(range(6))
  • shape属性可以查看array1的数据结构。
array1.shape
	输出:(6,)

修改shape,使其变为二维结构:

array1.shape = 2,3
print(array1)
	out:[[0 1 2]
		[3 4 5]]

此时数据元素值在内存中的位置并没有改变。

  • reshape()函数
    在一个数组的基础上创建一个新的数组
array2 = array1.reshape(3,2)
print(array2)
	out:[[0 1]
		[2 3]
		[4 5]]

array1的属性不会发生变化;

array1.shape
	out:(2, 3)

array1和array2共用内存中的数据存储值,若更改其中任意一个数组中的元素取值,则另一个数组相对应的元素值也会改变。
3. 多维结构的数组也可以直接通过array()函数创建

array3 = np.array([[1,2,3],
                   [4,5,6],
                   [7,8,9]])
  1. 利用arange()函数生成数组
    arange()函数可以通过设置起始值,结束值和步长来生成等差序列形式的一维数组。

array4 = np.arange(13,1,-1)

		out:[13 12 11 10  9  8  7  6  5  4  3  2]
arange()函数在创建数组序列时,不包括结束值。
5. linspace()函数
	该函数通过设置起始值、结束值和元素的个数来创建一维数组。
	可由endpoint参数决定是否需要包括结束值,默认包括。
```python
array5 = np.linspace(1,12,12,endpoint = True)
print(array5)
	out:
	[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12.]

默认数据类型为浮点型,参数dtype设置类型。

array6 = np.linspace(1,12,12,dtype=int)
print(array6)
	out:
	[ 1  2  3  4  5  6  7  8  9 10 11 12]
  1. 在不知道数组具体值时创建数组
  • zeros()函数生成元素全部为0的数组

  • ones()函数生成元素全部为1的数组

  • empty()函数生成给定维度的,无初始值的数组

    在默认的情况下,生成数组的元素类型为float64

数组元素索引与切片
  1. 提取单个或多个元素:
    array[start🔚step]
    返回的结果是索引值为start到end-1之间,并且是索引值与start之差可以被step整除的连续对象。
    提取的新数组与原来数组共享数据内存空间。

    使用整型数组作为索引也可以提取数组中的元素,与原数组不共享内存数据空间。
    array1[[0,1,4]]
    2.多维数组元素的提取:
    创建一个二维结构数组,第0轴长度为4,第1轴长度为6

na1 = np.array(np.arange(24),dtype=int).reshape(4,6)
	out:[[ 0  1  2  3  4  5]
		 [ 6  7  8  9 10 11]
		[12 13 14 15 16 17]
		[18 19 20 21 22 23]]
  • 在第0轴上,取索引值为0,1的元素,共两行
    在第1轴上,取索引值为1,2,3,4,5的元素,共五列
na1[:2,1:]
	out:array([[ 1,  2,  3,  4,  5],
   			[ 7,  8,  9, 10, 11]])
  • 在第0轴上,取到的索引值为[2,3]
    在第1轴上,取到的索引值为[2,4]
    这样取到的两个元素分别为na1[2,2],na1[3,4]
na1[[2,3],[2,4]]
	out:array([14, 22])

注意两种方法的区别

  • 在第0轴上,索引为一个范围
    在第1轴上,索引为一个数组
na1[2:,[2,4]]
	out:array([[14, 16],
  			 [20, 22]])
数组运算

创建一维数组ar1

ar1=np.array(np.arange(5))
	Out:array([0, 1,2, 3,4])

数组中每个元素都加4

np.add(ar1,4)
	Out: array([4,5,6,7,8)

创建一维数组ar2

ar2=np.array([2,3,4,5,6])
	Out : array([2, 3, 4,5,6])

数组ar1和ar2相加

ar1+ar2
	0ut: array([ 2, 4,6, 8,10])

用numpy库中的add函数做数组的加法

np.add(ar1,ar2)
	Out:array([ 2 4. 6, 8,10])

如果想将ar1与ar2相加后的结果返给ar1,则可以将add()函数的第三个参数赋给ar1

np.add(ar1,ar2,ar1)
posted @ 2020-03-29 11:26  c1utchfan  阅读(222)  评论(0)    收藏  举报