如何同时保存字符串和数字在同一个numpy数组中
时间: 2023-05-29 18:02:29 浏览: 529
您可以使用numpy的结构数组(structured arrays)来保存字符串和数字。
创建一个结构数组有三个步骤:
1. 定义字段名称和数据类型;
2. 创建一个空结构数组,指定名称和数据类型;
3. 插入数据。
下面是一个例子:
``` python
import numpy as np
person_data_def = [('name', 'S6'), ('age', 'i4'), ('weight', 'f8')]
person_data = np.zeros((2,), dtype=person_data_def)
print(person_data)
```
这里定义一个结构数组,包括三个字段,名称分别为“name”,“age”和“weight”,数据类型为字符串(长度为6),整数(4字节)和浮点数(8字节)。
创建一个空的结构数组,使用`np.zeros()`,指定数组长度为2,数据类型为`person_data_def`。
打印结果如下:
```
[(b'', 0, 0.) (b'', 0, 0.)]
```
现在插入数据:
``` python
person_data[0] = ('Alice', 25, 55.3)
person_data[1] = ('Bob', 30, 65.2)
print(person_data)
```
输出结果如下:
```
[(b'Alice', 25, 55.3) (b'Bob', 30, 65.2)]
```
这样,我们就可以将字符串和数字同时保存在同一个numpy数组中了。
相关问题
如何同时保存数字和字符串在同一个数据结构里
有多种方法可以同时保存数字和字符串在同一个数据结构里,以下是其中几种方法:
1. 使用元组。元组可以包含不同类型的元素,可以将数字和字符串作为元组的不同元素存储。
2. 使用列表。列表也可以包含不同类型的元素,数字和字符串可以作为列表的不同元素存储。
3. 使用字典。字典可以将数字和字符串以键值对的形式存储。
4. 使用类。可以创建一个包含数字和字符串属性的类,然后将对象存储在数据结构中。
5. 使用numpy数组。numpy数组可以包含不同的数据类型,可以将数字和字符串存储在同一个数组中。
numpy数组中含有带万的字符串数据,将它们的万去掉并保存为新的数组
假设我们有一个包含带万的字符串数据的NumPy数组,如下所示:
``` python
import numpy as np
arr = np.array(['1000万', '2000万', '500万', '1亿'])
```
我们可以使用NumPy的vectorize函数,结合Python内置的字符串操作函数,来处理这些字符串数据:
``` python
def remove_wan(x):
if '万' in x:
return str(int(x[:-1]) * 10000)
else:
return x
remove_wan_vec = np.vectorize(remove_wan)
new_arr = remove_wan_vec(arr)
print(new_arr)
```
输出结果为:
```
['10000000' '20000000' '5000000' '1亿']
```
我们定义了一个remove_wan函数,它接受一个字符串参数x,如果x中包含万,则将万去掉,并将数字乘以10000;否则直接返回x。然后,我们使用NumPy的vectorize函数将remove_wan函数向量化,使其能够处理NumPy数组中的每个元素。最后,我们将处理后的新数组打印出来。