利用Python进行数据分析系列之:数组和矢量计算

一、多维数组对象ndarray

  • ndarray是一个通用的同构数据多维容器,所有元素必须是相同类型的。
  • 每个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象)

二、创建ndarray

  • 创建数组最简单的办法就是使用array函数。
  • 接受一切序列的对象,然后产生一个新的含有传入数据的NumPy数组
import numpy as np

data1 = [6,7,8,9]

arr1 = np.array(data1)

print(arr1)

嵌套序列(比如由一组等长列表组成的列表)将会被转换为一个多维数组:

import numpy as np

data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)

print(arr2.ndim)
print(arr2.shape)

输出如下所示:
2
(2, 4)

np.array会为这个新建的数组推断出一个较为合适的数据类型。数据类型保存在一个特殊的dtype对象中。

print(arr2.dtype)

输出如下所示:

int64

显示转换类型

float_arr = arr2.astype(np.float64)
print(float_arr.dtype)

输出如下所示:
float64

三、数组和标量之间的运算

  • 大小相等的数组之间的任何算术运算都会将运算应用到元素级。
  • 数组与标量的算术运算会将那个标量值传播到各个元素。
arr3 = arr2 * 2
print(arr3)

输出如下所示:

[[ 2  4  6  8]
 [10 12 14 16]]

四、基本的索引和切片

import numpy as np
arr = np.arange(10)
print(arr)
print(arr[5:8])

五、布尔型索引

import numpy as np
fruit = np.array(["苹果","香蕉","葡萄","梨子","香蕉"])

print(fruit == "香蕉")

输出如下所示:

[False  True False False  True]
import numpy as np
data = np.random.randn(5,4)
print(data)


data1 = data[fruit == "香蕉"]
print(data1)

data2 = data[fruit == "香蕉",2:]
print(data2)

输出如下所示:

[[ 0.49075004  1.55862386  1.03066782  0.22563899]
 [-0.60533086 -0.36525286  1.14833953 -1.18084883]
 [ 0.74664513  1.63439969 -1.55003165  0.12231136]
 [-0.22104506 -1.38852615 -0.40339262  0.98258786]
 [-0.39505004  2.00589232 -0.64130727  0.24946445]]



[[-0.60533086 -0.36525286  1.14833953 -1.18084883]
 [-0.39505004  2.00589232 -0.64130727  0.24946445]]



[[ 1.14833953 -1.18084883]
 [-0.64130727  0.24946445]]

六、数组转置和轴对称

import numpy as np
arr = np.arange(15).reshape((3,5))
print(arr)

print(arr.T)

高维数组:

arr = np.arange(16).reshape((2,2,4))
print(arr)

输出如下所示:

[[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年5月28日
下一篇 2022年5月28日