函数名称 | 描述说明 |
---|---|
resize | 返回指定形状的新数组。 |
append | 将元素值添加到数组的末尾。 |
insert | 沿规定的轴将元素值插入到指定的元素前。 |
delete | 删掉某个轴上的子数组,并返回删除后的新数组。 |
argwhere | 返回数组内符合条件的元素的索引值。 |
unique | 用于删除数组中重复的元素,并按元素值由大到小返回一个新数组。 |
resize
numpy.resize(arr, shape)
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
# a数组的形状
print(a.shape)
b = np.resize(a, (3, 2))
# b数组
print(b)
# b数组的形状
print(b.shape)
# 修改b数组使其形状大于原始数组
b = np.resize(a, (4, 3))
print(b)
# 输出结果如下:
"""
[[1 2 3]
[4 5 6]]
(2, 3)
[[1 2]
[3 4]
[5 6]]
(3, 2)
[[1 2 3]
[4 5 6]
[1 2 3]
[4 5 6]]
"""
resize()
和reshape()
的区别
resize()
仅对原数组进行修改,没有返回值;reshape()
不仅对原数组进行修改,同时返回修改后的结果。arr.resize(新数组维度)
或
arr.reshape(新数组维度)
在数组末尾添加值,默认返回一个一维数组,由append
追加**axis**
参数决定。 ```python numpy.append(arr, values, axis=None)
其中:
- arr:输入的数组
- values:向arr中添加的值,需要与arr数组的形状保持一致
- axis:默认为None,返回的是一维数组;
当axis=0时,追加的值会被添加到行;当axis=1时,追加的值被添加到列
a = np.array([[1,2,3],[4,5,6]])
向数组a添加元素
print (np.append(a, [7,8,9]))
沿轴 0 添加元素
print (np.append(a, [[7,8,9]],axis = 0))
沿轴 1 添加元素
print (np.append(a, [[5,5,5],[7,8,9]],axis = 1))
输出结果如下:
“”” [1 2 3 4 5 6 7 8 9] [[1 2 3] [4 5 6] [7 8 9]] [[1 2 3 5 5 5] [4 5 6 7 8 9]] “””
<a name="pPf3C"></a>
# `insert`插入
表示沿指定的轴,**在给定索引值的前一个位置插入相应的值**,如果**没有提供轴**,则**输入数组被展开为一位数组**。
```python
numpy.insert(arr, obj, values, axis)
其中:
* arr:要输入的数组
* obj:表示索引值,在该索引值之前插入values值
* values:要插入的值
* axis:指定轴,未提供,输入数组会被展开为一位数组
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6]])
# 不提供axis的情况,会将数组展开
print(np.insert(a, 3, [11, 12]))
# 沿轴 0 垂直方向
print(np.insert(a, 1, [11], axis=0))
# 沿轴 1 水平方向
print(np.insert(a, 1, [11], axis=1))
# 输出结果如下:
"""
[ 1 2 3 11 12 4 5 6]
[[ 1 2]
[11 11]
[ 3 4]
[ 5 6]]
[[ 1 11 2]
[ 3 11 4]
[ 5 11 6]]
"""
delete
删除
该方法表示从输入数组中删除指定的子数组,并返回一个新数组。
- 与
insert()
方法类似,若不提供**axis**
参数,则输入数组被展开为一维数组。 ```python numpy.delete(arr, obj, axis)
其中:
- arr:要输入的数组
- obj:整数或整数数组,表示要被删除数组元素或子数组
- axis:沿着哪条轴删除子数组
a = np.arange(12).reshape(3, 4)
a数组
print(a)
不提供axis参数情况
print(np.delete(a, 5))
删除第二列
print(np.delete(a, 1, axis=1))
删除经切片后的数组
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) print(np.delete(a, np.s_[::2]))
输出结果如下:
“”” [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [ 0 1 2 3 4 6 7 8 9 10 11] [[ 0 2 3] [ 4 6 7] [ 8 10 11]] [ 2 4 6 8 10] “””
<a name="Ykrcf"></a>
# `argwhere`查找索引
该函数**返回数组中非**`**0**`**元素的索引**,**若是多维数组,则返回行、列索引组成的索引坐标**。
```python
import numpy as np
x = np.arange(6).reshape(2, 3)
print(x)
# 返回所有大于1的元素索引
y = np.argwhere(x > 1)
print(y)
# 输出结果如下:
"""
[[0 1 2]
[3 4 5]]
[[0 2]
[1 0]
[1 1]
[1 2]]
"""
unique
去重
numpy.unique(arr, return_index, return_inverse, return_counts)
其中:
* arr:输入数组,若是多维数组则以一维数组形式展开;
* return_index:如果为 True,则返回新数组元素在原数组中的位置(索引);
* return_inverse:如果为 True,则返回原数组元素在新数组中的位置(索引);
* return_counts:如果为 True,则返回去重后的数组元素在原数组中出现的次数。
import numpy as np
a = np.array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])
print(a)
# 对a数组的去重
uq = np.unique(a)
print(uq)
# 数组去重后的索引数组
u, indices = np.unique(a, return_index=True)
# 打印去重后数组的索引
print(indices)
# 去重数组的下标:
ui, indices = np.unique(a, return_inverse=True)
print(ui)
# 打印下标
print(indices)
# 返回去重元素的重复数量
uc, indices = np.unique(a, return_counts=True)
print(uc)
# 元素出现次数:
print(indices)
# 输出结果如下:
"""
[5 2 6 2 7 5 6 8 2 9]
[2 5 6 7 8 9]
[1 0 2 4 7 9]
[2 5 6 7 8 9]
[1 0 2 0 3 1 2 4 0 5]
[2 5 6 7 8 9]
[3 2 2 1 1 1]
"""