python - 如何将数组的所有奇数值更改为其负数,例如通过花式索引 1 应该是 -1 吗?

标签 python python-3.x numpy jupyter-notebook

我正在尝试使用 numpy 来理解奇特的索引,但仍然面临一些问题。

我试图解决给定数组中的奇数 -ve 值需要了解如何将给定数组中的 +ve odd 替换为 -ve odd 的问题。 reshape 不起作用

import numpy as np
from numpy import reshape

v = np.arange(1, 91, 1)
print(v)
print("\n")

v1 = ((v[v%2==1])* (-1))
print (v1)
print("\n")

#val = np.arange(1, 91, 1).reshape(6,6)
#print(val)
#print("\n")

这是错误信息 ValueError:无法将大小为 90 的数组 reshape 为形状 (6,6)

最佳答案

选择所有奇数并将它们乘以 -1:

import numpy as np

v1 = np.arange(1, 91, 1) 
v1[v1%2==1] *= -1          # select & multiply only odd indexes, don't effect even ones

print (v1)

输出:

[ -1   2  -3   4  -5   6  -7   8  -9  10 -11  12 -13  14 -15  16 -17  18
 -19  20 -21  22 -23  24 -25  26 -27  28 -29  30 -31  32 -33  34 -35  36
 -37  38 -39  40 -41  42 -43  44 -45  46 -47  48 -49  50 -51  52 -53  54
 -55  56 -57  58 -59  60 -61  62 -63  64 -65  66 -67  68 -69  70 -71  72
 -73  74 -75  76 -77  78 -79  80 -81  82 -83  84 -85  86 -87  88 -89  90]

您给出的错误源于将 90 个元素 reshape 为 6*6 元素(即不可能)。您的 v1

[ -1  -3  -5  -7  -9 -11 -13 -15 -17 -19 -21 -23 -25 -27 -29 
 -31 -33 -35 -37 -39 -41 -43 -45 -47 -49 -51 -53 -55 -57 -59 
 -61 -63 -65 -67 -69 -71 -73 -75 -77 -79 -81 -83 -85 -87 -89]

因为您选择了奇数,所以乘以 -1 并分配它们 - 偶数不会被分配。这些值仍然是 45 个,而不是 36 个。

您无法将 90 个元素 reshape 为 6*6 (36) 个元素。你可以这样做:

print( np.arange(1, 91, 1).reshape(9,10) ) # reshape 90 elemens into 10*9 elems

[[ 1  2  3  4  5  6  7  8  9 10]
 [11 12 13 14 15 16 17 18 19 20]
 [21 22 23 24 25 26 27 28 29 30]
 [31 32 33 34 35 36 37 38 39 40]
 [41 42 43 44 45 46 47 48 49 50]
 [51 52 53 54 55 56 57 58 59 60]
 [61 62 63 64 65 66 67 68 69 70]
 [71 72 73 74 75 76 77 78 79 80]
 [81 82 83 84 85 86 87 88 89 90]]

关于python - 如何将数组的所有奇数值更改为其负数,例如通过花式索引 1 应该是 -1 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836829/

相关文章:

python - 如何使用 Python 找出我的微调模型?

python - 组合 Python Pandas Dataframe 比 List Append 方法更有效

python - 无法将 Heroku 数据库 pull 到本地

python - Web 抓取导致 403 禁止错误

python-3.x - Flask:在 send_file() 完成后从服务器删除文件

python - 通过用前一个值填充中间值来增加数组的大小

python - Flask-sqlalchemy - 用户查询 'BaseQuery' 对象没有属性 'password'

python - 如何从 Pandas 数据框中的可变长度列中提取子字符串?

python - 是否有 numpy.all() 的倒置版本?

python - 从卷中裁剪空数组(填充)