Numpy学习(2)

Numpy学习(2)

数组的形状

数组的属性

使用numpy生成的数组有以下属性(方法)

Shape:返回数组的维度元组,也可用于调整数组的维度;

import numpy as np

t1 = np.arange(12)
print(t1)
print(t1.shape)
print("*****************************")
t2 = np.array([[1,2,3],[4,5,6]])
print(t2)
print(t2.shape)
print("*****************************")
t3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(t3)
print(t3.shape)
print("*****************************")
t4 = t1.reshape((3,4))
print(t4)
print("*****************************")
t5 = np.arange(24).reshape(2,3,4)
print(t5)
print(t5.reshape(4,6))
print(t5)

out[1]:
[ 0  1  2  3  4  5  6  7  8  9 10 11]
(12,)
*****************************
[[1 2 3]
 [4 5 6]]
(2, 3)
*****************************
[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]]
(2, 2, 3)
*****************************
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
*****************************
[[[ 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  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

在调用shape方法的时候,我们能找到一个规律,“是几维数组,输出就是几个数字组成”,一维数组时,输出有多少元素,二维数组时,输出(行,列)的数组,三维时,输出(模块,每个模块中的行,每个模块中的列)。

Reshape:也可用来调整数组的维度,但该方法并不会改变原来数组的维度,只会返回一个改变维度后的数组;
由上面的代码可以发现,reshape不会改变原有的数据,只会改变当前行所执行的语句。
语句中-1代表缺省值,
reshape(-1,1)表示只固定列为1列,行不知道,自动确定
同理,.reshape(2,-1)表示只确定行,列系统自动确定。

在reshape中也需要注意维度问题,还是和shape中的规律一样,括号中几个数字就代表转化为几维数组。
注意:reshape(1,2)和reshape((1,2))输出的值是一样的,但是建议使用第二种(笔者测试,不知道是否是有其他原因,希望看到并且知道的能指出错误)。

t6 = np.arange(24).reshape(4,6)
print(t6)
t7 = t6.shape[0]
print(t7)

out[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]]
4

shape[num]:此处的num={0,1},取0时代表行,取1时代表列(python中很多方法都有取行列,由0和1表示,但是不同的方法或函数0和1分别代表的不一定是行和列,也可能是列和行)。

numpy中的ravel()、flatten()、squeeze()都有将多维数组转换为一维数组的功能,区别:
ravel():如果没有必要,不会产生源数据的副本
flatten():返回源数据的副本
squeeze():只能对维数为1的维度降维

另外,reshape(-1)也可以“拉平”多维数组

Itemsize:返回数组中每一项所占的字节大小(int8为一字节)

ndim: 返回矩阵的秩

size:返回矩阵元素的个数

dtype:返回矩阵元素的数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值