# numpy练习1
## 导入模块
```python
import numpy
```
## 产生一维数组
```python
arr1=numpy.arange(10)#方式1
print(arr1)
arr2=numpy.array([1,2,1,0])#方式2
print(arr2)
```
[0 1 2 3 4 5 6 7 8 9]
[1 2 1 0]
## 产生多维数组
```python
arr3=numpy.array([[1,2,3]
,[4,5,6]])#方式1
print(arr3)
arr4=numpy.array([numpy.arange(2),numpy.arange(2)])#方式2
print(arr4)
arr5=numpy.zeros([3,3])#方式3
print(arr5)
arr6=numpy.ones([2,4])#方式4
print(arr6)
```
[[1 2 3]
[4 5 6]]
[[0 1]
[0 1]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]]
## 查看数据类型
```python
print(arr1.dtype)
print(arr5.dtype)
```
int32
float64
## 设置数据类型
```python
arr7=numpy.array([1,2,1,0],dtype=numpy.int64)
print(arr2.dtype)
print(arr7.dtype)
```
int32
int64
可以看到,arr2和arr7的内容相同,但是类型不同。可以通过`dtype.itemsize`查看某个类型占用的字节数大小。
```python
print(arr2.dtype.itemsize)
print(arr7.dtype.itemsize)
```
4
8
## 查看数组的形状(维度)
```python
print(arr1.shape)
print(arr3.shape)
```
(10,)
(2, 3)
对于不含元素的numpy数组,print将只打印出`[]`,但shape保持原来的设定,举例如下:
```python
tmp=numpy.ones([1,0,1])
print(tmp)
print(tmp.shape)
```
[]
(1, 0, 1)
## 设置数组的形状
数组的形状也可以直接设置,这可以容易地使得已有的数组转换成目标维度,但需要保证数组的元素个数不变。
```python
arr8=arr3.copy()
print(arr8)
arr8.shape=(6,1)
print(arr8)
```
[[1 2 3]
[4 5 6]]
[[1]
[2]
[3]
[4]
[5]
[6]]
__需要注意的是,上面在将arr3的内容拷贝到arr8时,使用了copy方法来实现对象的复制,否则arr8将与arr3共享一个对象。__
## 选择数组元素
### 选择单个元素
```python
print(arr1)
print(arr1[1])
print()
print(arr6)
print(arr6[1,1])
```
[0 1 2 3 4 5 6 7 8 9]
1
[[1. 1. 1. 1.]
[1. 1. 1. 1.]]
1.0
### 选择切片元素:即某个维度上连续的一些元素
```python
print(arr1)
print(arr1[1:7])
print()
print(arr3)
print(arr3[:,1:3])
```
[0 1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6]
[[1 2 3]
[4 5 6]]
[[2 3]
[5 6]]
`arr1[1:7]`选择了arr1中下标从1到7(不包含7)的所有元素,并将其组成数组返回。
`arr3[:,1:2]`选择了arr3中第一个维度的所有元素,第二个维度下标1到3(不含3)的元素,并按照原来的数组结构返回。
在选择切片元素时,单独的`:`表示选取这个维度的所有元素;`a:b`表示选取该维度上下标从a到b-1的所有元素;`a:b:c`表示从以步长c选取a到b-1的所有元素。这些与python的数组操作意义均相同。
```python
print(arr3[1:2,1:1])
```
[]
__从以上的例子,我们可以假设numpy是按维度顺序顺次存储所有的元素,并且额外存储了数组的形状,在需要的时候将数组按照合适的视图呈现。__
需要注意的是,对数组进行选择,结果会返回一个新的对象,但该对象和原来的对象的数据共享同一个内存区域。请看下例,arr9是arr3的一个切片,其数据地址相同而对象地址不同,可以认为切片只是返回了原来数组的一个__视图__。
```python
print(arr3)
print()
arr9=arr3[:,1:3]
print(arr9)
print()
print(id(arr9.base)==id(arr3))
```
[[1 2 3]
[4 5 6]]
[[2 3]
[5 6]]
True
- Linux
- bash常见的命令汇总
- 切换用户登陆到bash时的目录
- grep匹配tab
- gperftools的使用
- Hyper-V安装Linux
- ubuntu on windows 忘记密码怎么办
- 修改用户默认shell
- ubuntu 安装pip
- Arch Linux安装记录
- Hyper-V中安装Linux的一些问题
- ASR
- 数据集
- PCM音频文件
- One-Pass算法
- CHiME5环境配置中遇到的一些问题
- Python
- 命令行参数解析
- 三目运算符
- Numpy
- 练习1
- 练习2
- Others
- GNU make 的用法
- pandoc
- Git
- PowerShell
- 花括号的作用
- 一条命令在多行内输入
- Tex
- Latex基础知识
- tikz库
- CTex使用中的一些问题
- C++
- 标准库list
- 数据结构
- kdtree