为什么不能在循环内更改数组的数据类型?

问题描述

我有一个包含复杂条目的数组列表结构,我想将它们转换为浮点数。虚部可以丢掉,没问题。

const Parent = ({}) => {

  const context = useSelector(); //context comes from the store.
  const [selectedTab,setSelectedTab] = useState(false);
  const [content,setContent] = useState(null);

  useEffect(() => {
    switch (selectedTab) {
      case 'components':
        setContent(<MyComponent context={context} />);
        break;
    }
  },[selectedTab,context]);

  return(<>{content}</>);
};

我想知道为什么这不起作用,而另一方面,在创建列表“数组”之前将类型更改为浮动确实有效。

import numpy as np

a=np.array([2+3j,3+4j])
b=np.array([1+2j,4+3j])
arrays=[a,b]

for i,y in enumerate(arrays):
    y=y.astype('float64')

print(arrays)

这是一个非常基本的问题,但如果有人能分享他或她对此的看法,我会很高兴。

提前致谢:)

解决方法

我想知道,为什么这不起作用......

y.astype('float64') 创建一个新对象。循环中的赋值将该新对象赋值给名称y。由于赋值 y 不再指向数组项,因此数组项未更改。

如果您在循环中执行修改项目就地的操作,它将按您的预期工作。 ...

for i,y in enumerate(arrays):
    np.add(y,4,out=y)

for i,y in enumerate(arrays): y = y + 4 的行为与您问题中的示例相同。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...