gpt4 book ai didi

python - Numpy 零和字符串数据类型

转载 作者:行者123 更新时间:2023-11-30 22:25:00 24 4
gpt4 key购买 nike

我有一个 18x18 的 Numpy Zeros 网格,并且使用下面的代码随机填充 1 和 2 的棋盘。

import numpy as np
a=np.zeros(324)
p=np.random.permutation(324)
a[p[:30]]=1
a[p[30:60]]=2
a.reshape(18,18)

它返回正确的 numpy 数组。但是,我想在其中添加一个随机 X,因此我将上面代码的第一行更改为如下所示

a=np.zeros(324,dtype=str)

但是,当我运行代码时,数组中的所有零都消失了。它只是显示为“_”(没有下划线)。有什么想法可以在数组中包含字符串但也包含零吗?

或者创建一个可以包含字符串的 18x18 网格的更好方法?

最佳答案

dtype=str 的“零”是空白,而不是 0 甚至 '0':

In [1]: a = np.zeros((3,3))
In [2]: a
Out[2]:
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
In [3]: a = np.zeros((3,3),int)
In [4]: a
Out[4]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
In [5]: a = np.zeros((3,3),bool)
In [6]: a
Out[6]:
array([[False, False, False],
[False, False, False],
[False, False, False]], dtype=bool)
In [7]: a = np.zeros((3,3),str)
In [8]: a
Out[8]:
array([['', '', ''],
['', '', ''],
['', '', '']],
dtype='<U1')

通常最好也指定字符串长度,但仍然会出现空白:

In [9]: a = np.zeros((3,3),'U4')
In [10]: a
Out[10]:
array([['', '', ''],
['', '', ''],
['', '', '']],
dtype='<U4')

您可以将整数数组转换为字符串,并添加其他字符串值:

In [11]: a = np.zeros((3,3),int)
In [12]: a[[0,1,2],[2,0,1]] = [1,2,3]
In [13]: a
Out[13]:
array([[0, 0, 1],
[2, 0, 0],
[0, 3, 0]])
In [14]: A = a.astype(str)
In [15]: A
Out[15]:
array([['0', '0', '1'],
['2', '0', '0'],
['0', '3', '0']],
dtype='<U11')
In [16]: A[[0,1,2],[0,1,2]] = 'X'
In [17]: A
Out[17]:
array([['X', '0', '1'],
['2', 'X', '0'],
['0', '3', 'X']],
dtype='<U11')

原来的0变成字符串'0'

关于python - Numpy 零和字符串数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47666539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com