Numpy的使用(一)

arr1=np.arange(4)
print(arr1)

[0, 1, 2, 3]

arr2=arr1*2
print(arr2)

[0 2 4 6]

my_list=list(arr1)
my_list1=my_list*2
print(my_list1)

[0, 1, 2, 3, 0, 1, 2, 3]

my_list2=[x*2 for x in my_list]
print(my_list2)

[0, 2, 4, 6]

NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器。你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样。

data=np.random.randn(2,3)
print(data)
print(data*3)
print(data+data)

[[ 0.53023545  0.13286423 -0.75920799]
 [-0.28459563 -0.32940274  0.1573478 ]]
[[ 1.59070636  0.39859269 -2.27762398]
 [-0.85378689 -0.98820822  0.47204341]]
[[ 1.06047091  0.26572846 -1.51841599]
 [-0.56919126 -0.65880548  0.31469561]]

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

print(data.shape)
print(data.dtype)

(2, 3)
float64

创建ndarray的方法:

最简单的办法就是使用array函数

data1=[1,2,3]
data2=np.array(data1)
print(data2)

[1 2 3]

print(data2.ndim)#返回维度

除非特别说明,np.array会尝试为新建的这个数组推断出一个较为合适的数据类型

除np.array之外,还有一些函数也可以新建数组。比如,zeros和ones分别可以创建指定长度或形状的全0或全1数组。empty可以创建一个没有任何具体值的数组。要用这些方法创建多维数组,只需传入一个表示形状的元组即可

print(np.zeros(8))
print(np.ones((3,4)))
print(np.empty((2,3,2)))

[0. 0. 0. 0. 0. 0. 0. 0.]
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
[[[1. 1.]
  [1. 1.]
  [1. 1.]]

 [[1. 1.]
  [1. 1.]
  [1. 1.]]]

注意:认为np.empty会返回全0数组的想法是不安全的。很多情况下,它返回的都是一些未初始化的垃圾值。

指定数据类型:

arr1 = np.array([1, 2, 3], dtype=np.float64)
print(arr1.dtype)

float64

ndarray的astype方法明确地将一个数组从一个dtype转换成另一个dtype

arr=np.array([2.3,5.6,9.807])
print(arr)
print(arr.astype(np.int32))

[2.3   5.6   9.807]
[2 5 9]

NumPy数组的运算

arr = np.array([[1., 2., 3.], [4., 5., 6.]])
print(arr)
print(arr-arr)
print(arr*arr)
print(1/arr)
print(arr**2)

[[1. 2. 3.]
 [4. 5. 6.]]
[[0. 0. 0.]
 [0. 0. 0.]]
[[ 1.  4.  9.]
 [16. 25. 36.]]
[[1.         0.5        0.33333333]
 [0.25       0.2        0.16666667]]
[[ 1.  4.  9.]
 [16. 25. 36.]]

大小相同的数组之间的比较会生成布尔值数组

arr = np.array([[1., 2., 3.], [4., 5., 6.]])
arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
print(arr>arr2)

[[ True False  True]
 [False  True False]]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值