python - 为什么我会收到以下错误?Valueerror:使用序列设置数组元素
问题描述
我想输出一个列表,其中每个元素都是一个字符串。为什么我会收到以下错误?
hhh[i,j]=['Ok']
ValueError:使用序列设置数组元素。
yyyy=np.asarray([[ 52.187, 39.141, 26.094],
[ 57.164, 42.874, 28.583],
[ 71.619, 53.716, 35.811],
[ 21.565, 16.174, 10.783],
[ 67.592, 50.694, 33.796],
[109.85 , 82.39 , 54.928]])
hhh=np.zeros((6,3))
print(hhh)
for i in range(0,6):
for j in range(0,3):
if yyyy[i,j]<= 100:
hhh[i,j]=['Ok']
else:
hhh[i,j]=['No']
我的预期结果是获得“Ok”或“No”的列表 hhh[6,3]
解决方案
鉴于你正在使用NumPy
,你有np.where
这个:
np.where(yyyy<=100, 'OK', 'NO')
array([['OK', 'OK', 'OK'],
['OK', 'OK', 'OK'],
['OK', 'OK', 'OK'],
['OK', 'OK', 'OK'],
['OK', 'OK', 'OK'],
['NO', 'OK', 'OK']], dtype='<U2')
如果您想要一个列表,只需添加, .tolist
,np.where(yyyy<=100, 'OK', 'NO').tolist()
请注意,由于默认情况下np.zeros
会创建一个ndarray
of ,因此您会收到一个错误dtype('float64')
。相反,您可以定义一个与和 withnp.empty
具有相同形状的 ndarray ,即长度为unicode 的字符串:yyyy
dtype('<U2')
2
hhh = np.empty(shape=yyyy.shape, dtype='U2')
for i in range(0,6):
for j in range(0,3):
if yyyy[i,j]<= 100:
hhh[i,j]='Ok'
else:
hhh[i,j]='No'
推荐阅读
- asp.net-mvc - 为什么我们要在这个控制器中返回一个上传图片的值?
- javascript - 如何在交互式故事中隐藏/显示图片
- javascript - 用于读取网页多个txt文件的javascript函数
- jsf - 我无法在 Glassfish 中访问我的页面
- c++ - 当数据计算逐渐变长时,c ++创建剩余时间估计?
- vb.net - 在 GMap 的 polyoverlays 中删除特定的多边形
- r - 是否有用于显示多个 x 轴标签和 y 轴标签的 R 函数?
- bash - 如何使用通配符和-f检查if语句bash中的文件类型
- express - 安装 express-static-gzip 后 req.body 未定义
- python - 作业计划程序中未执行 Web 推送