如何同时保存字符串和数字在同一个numpy数组中
时间: 2023-05-29 14:02:29 浏览: 912
您可以使用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数组中了。
相关问题
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数组中的每个元素。最后,我们将处理后的新数组打印出来。
python实现通过输入获得一串数字,输入q停止,在获得这些数字之后,去掉q,保存为numpy数组
在Python中,你可以使用`input()`函数获取用户输入的一串数字,然后处理字符串直到遇到'q'为止。我们将这个过程封装在一个循环里,并使用`try-except`结构来处理可能出现的错误。最后,我们将剩下的数字转换成`numpy`数组。下面是一个示例:
```python
import numpy as np
numbers = []
while True:
user_input = input("请输入一个数字(输入 'q' 结束):")
if user_input.lower() == 'q': # 如果输入是 'q' 转换为小写并退出循环
break
try:
number = float(user_input) # 尝试将输入转换为浮点数
numbers.append(number)
except ValueError: # 如果无法转换,捕获异常并忽略非数字输入
print(f"无效输入 '{user_input}',请只输入数字或 'q'.")
# 创建numpy数组
num_array = np.array(numbers)
print("保存的numpy数组为:", num_array)
阅读全文