Numpy基础:数组和矢量计算

时间:2021-12-22 20:07:06

ndarray:多维数组对象

1.创建ndarray

创建数组最简单的方法是使用array 函数。它接受一切序列型的对象。

import numpy as np

data1 = [6,7.5,8,0,1]

arr1 = np.array(data1)

arr1
Out[4]: array([ 6. , 7.5, 8. , 0. , 1. ])

每一个数组都有一个 shape 和一个 dtype

arr1.shape
Out[5]: (5L,)

arr1.dtype
Out[6]: dtype('float64')

zeros 和函数 ones 创建指定 长度或形状的全0全1数组。empty创建没有任何具体值的数组

np.zeros(7)
Out[9]: array([ 0., 0., 0., 0., 0., 0., 0.])

np.ones((2,3))
Out[10]:
array([[ 1., 1., 1.],
[ 1., 1., 1.]]
)

np.empty((2,3))
Out[11]:
array([[ 0., 0., 0.],
[ 0., 0., 0.]]
)

2.数据类型转换

astype
整数转为浮点数时,小数部分会被截断

arr = np.array([3.7,-1.2,-2.6,0.5])

arr
Out[14]: array([ 3.7, -1.2, -2.6, 0.5])

arr.astype(np.int32)
Out[15]: array([ 3, -1, -2, 0])

某字符串数组表示的全是数字也可以用astype转换

num_str = np.array(['1.25','-3.6','24'],dtype = np.string_)

num_str.astype(float)
Out[18]: array([ 1.25, -3.6 , 24. ])

3.数组和标量之间的运算

大小相等的数组间的任何算术运算都会将运算应用到元素级

4.索引和切片

索引:选取数组的子集或单个元素
下标从0开始,左闭右开

arr = np.arange(10)

arr
Out[20]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[5:8]
Out[21]: array([5, 6, 7])

arr[5:8]=12

arr
Out[23]: array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])

arr_slice = arr[5:8]

arr_slice[1]=123

arr
Out[26]: array([ 0, 1, 2, 3, 4, 12, 123, 12, 8, 9])

arr_slice[:]=64

arr
Out[28]: array([ 0, 1, 2, 3, 4, 64, 64, 64, 8, 9])

5.数组的转置和轴对换

计算矩阵内积

arr = np.random.randn(6,3)

np.dot(arr.T,arr)
Out[30]:
array([[ 8.46291352, -6.53225698, -0.56153338],
[-6.53225698, 9.06106344, 2.52970761],
[-0.56153338, 2.52970761, 5.57303457]]
)

6.通用函数

通用函数是一种对ndarray中的数据执行元素级运算的函数
square: 计算各元素的平方
sign:计算元素的正负号
ceil:大于等于该值的最小整数
floor:小于等于该值的最大整数
rint: 四舍五入,保留dtype
modf:将数组以小数部分和整数部分两个独立的数组形式返回