【Python】多维narray数组的子数组仍然是narray格式,赋值也无法改变这一点
来源:互联网 发布:xls软件官方下载 编辑:程序博客网 时间:2024/06/18 10:44
问题描述:
当我运行一行代码
a = np.zeros((5,3))
a[1] = [0, 1, 0]
a[1] == [0, 1, 0] =>true
a[2] ==[0, 0, 0] => ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
问题解析:
a是一个numpy数组,其子数组也是一个numpy数组
>>> a=np.zeros((5,3))>>> aarray([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]])>>> a[2] == [0,0,1]array([ True, True, False], dtype=bool)
可以看出,numpy数组和普通数组、numpy数组做逻辑比较,实际上是挨个比较,比较结果仍然是一个numpy数组。
>>> type(a[2])<class 'numpy.ndarray'>
问题解决:
方法一:把a定义为普通二维数组。
方法二:用.all()与.any()
>>> a[2]array([ 0., 0., 0.])>>> (a[2]==[0,1,0]).any()True>>> (a[2]==[0,1,0]).all()False
注意:即便是通过如下方式定义的数组,其元素仍然是narray格式。
>>>sss = np.array([[0 for i in range(3)] for j in range(self.N)]>>>sss[0] array([0, 0, 0])
通过赋值方式改变narray元素:
>>> sss[0] = [0,0,0]>>> print(sss)array([[ 0., 0., 0.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])>>> type(sss[0])<class 'numpy.ndarray'>
阅读全文
0 0
- 【Python】多维narray数组的子数组仍然是narray格式,赋值也无法改变这一点
- narray数组操作:数组长度、合并行元素、平方、平方根、list转化为narray
- 如何把narray的数据输出成文本格式
- Block的应用---拓展NArray
- Python的多维空数组赋值
- python,numpy库学习ndarray,narray
- python科学计算之narray对象
- java:多维数组赋值
- 20. 面向对象的LotusScript(三)之NArray
- python 多维数组的排序
- python 多维数组的排序
- 《python》---数组和多维数组的产生
- 给多维数组对象赋值
- php多维数组循环赋值
- php遍历多维数组改变数组的值
- python 多维数组相加
- python多维数组切片
- python多维数组筛选
- Linux信号列表
- GO语言的reflection
- HTML+CSS知识点(一)
- 指针笔记简要
- centos7.2下安装mysql5.7.16使用rpm包安装
- 【Python】多维narray数组的子数组仍然是narray格式,赋值也无法改变这一点
- 57- 打印钻石图形
- web.xml配置文件元素解释
- 金额保留两位小数
- C++第5次实验(提高班)—类和对象1(参考答案)
- MapDB的使用实战
- HDU 2549 壮志难酬
- 微软大楼设计方案(简单)
- vue单一组件下动态修改数据时的全部重渲染